[ 
https://issues.apache.org/jira/browse/FLINK-12841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bowen Li updated FLINK-12841:
-----------------------------
    Description: 
We've been evaluating the original design in FLIP-30 that proposed creating 
catalog meta object interfaces and individual impl of those interfaces in each 
catalog. Interfaces we have so far are: {{CatalogDatabase}}, {{CatalogTable}}, 
{{CatalogView}}, {{CatalogPartition}}, {{CatalogFunction}}, and e.g. for 
{{CatalogTable}} interface, we have impls of {{GenericCatalogTable}} and 
{{HiveCatalogTable}}, etc.

Well, we have gone pretty far on FLIP-30 now. When we look back and re-evaluate 
this design, we actually found there are not many differences between, e.g. 
{{GenericCatalogTable}} and {{HiveCatalogTable}}. And having this class 
hierarchy complicates situations and development. E.g. this requires sql client 
to have a hard dependency on flink-connector-hive in order to create 
{{HiveCatalogTable}} from DDL.

On the other side in Blink, we don't have this hierarchy and have been just 
using a single meta-object class (e.g. just {{CatalogTable}}) to represent data 
in different catalogs, it has been fine without any problem and all the 
difference among catalogs can be stored as properties.

Thus we propose removing the inheritance hierarchy and impl of the meta-object 
interfaces for each individual catalog. To be more specific, take table classes 
for example, we will replace {{CatalogTable}} with existing 
{{AbstractCatalogTable}}, and remove {{GenericCatalogTable}} and 
{{HiveCatalogTable}}.

  was:
We've been evaluating the original design in FLIP-30 that proposed creating 
catalog meta object interfaces and individual impl of those interfaces in each 
catalog. Interfaces we have so far are: {{CatalogDatabase}}, {{CatalogTable}}, 
{{CatalogView}}, {{CatalogPartition}}, {{CatalogFunction}}, and e.g. for 
{{CatalogTable}} interface, we have impls of {{GenericCatalogTable}} and 
{{HiveCatalogTable}}, etc.

Well, we have gone pretty far on FLIP-30 now. When we look back and re-evaluate 
this design, we actually found there are not many differences between, e.g. 
{{GenericCatalogTable}} and {{HiveCatalogTable}}. And having this class 
hierarchy complicates situations and development. On the other side in Blink, 
we don't have this hierarchy and have been just using a single meta-object 
class (e.g. just {{CatalogTable}}) to represent data in different catalogs, it 
has been fine without any problem and all the difference among catalogs can be 
stored as properties.

Thus we propose removing the inheritance hierarchy and impl of the meta-object 
interfaces for each individual catalog. To be more specific, take table classes 
for example, we will replace {{CatalogTable}} with existing 
{{AbstractCatalogTable}}, and remove {{GenericCatalogTable}} and 
{{HiveCatalogTable}}.


> Unify catalog meta-objects implementations and remove their interfaces
> ----------------------------------------------------------------------
>
>                 Key: FLINK-12841
>                 URL: https://issues.apache.org/jira/browse/FLINK-12841
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Connectors / Hive, Table SQL / API
>    Affects Versions: 1.9.0
>            Reporter: Bowen Li
>            Assignee: Bowen Li
>            Priority: Major
>             Fix For: 1.9.0
>
>
> We've been evaluating the original design in FLIP-30 that proposed creating 
> catalog meta object interfaces and individual impl of those interfaces in 
> each catalog. Interfaces we have so far are: {{CatalogDatabase}}, 
> {{CatalogTable}}, {{CatalogView}}, {{CatalogPartition}}, {{CatalogFunction}}, 
> and e.g. for {{CatalogTable}} interface, we have impls of 
> {{GenericCatalogTable}} and {{HiveCatalogTable}}, etc.
> Well, we have gone pretty far on FLIP-30 now. When we look back and 
> re-evaluate this design, we actually found there are not many differences 
> between, e.g. {{GenericCatalogTable}} and {{HiveCatalogTable}}. And having 
> this class hierarchy complicates situations and development. E.g. this 
> requires sql client to have a hard dependency on flink-connector-hive in 
> order to create {{HiveCatalogTable}} from DDL.
> On the other side in Blink, we don't have this hierarchy and have been just 
> using a single meta-object class (e.g. just {{CatalogTable}}) to represent 
> data in different catalogs, it has been fine without any problem and all the 
> difference among catalogs can be stored as properties.
> Thus we propose removing the inheritance hierarchy and impl of the 
> meta-object interfaces for each individual catalog. To be more specific, take 
> table classes for example, we will replace {{CatalogTable}} with existing 
> {{AbstractCatalogTable}}, and remove {{GenericCatalogTable}} and 
> {{HiveCatalogTable}}.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to