Hi, all.

Feng Jing, Ron Liu and I are are currently working on removing deprecated 
public APIs from the table module and have encountered an issue. 

Take CatalogFactory as an example, the CatalogFactory class implements both the 
new api Factory and the deprecated api TableFactory. Within 

CatalogFactory, all methods of the new api Factory have default implementations 
that currently return errors, providing compatibility with the old 

api TableFactory. As we move forward with the removal of the deprecated api 
TableFactory, we are uncertain about whether to remove the default 

methods from the new api Factory. 

There are two options: 

1. Leave it unchanged for now: The advantage of this approach is that we adhere 
to the principle of not modifying public APIs at all. However, I believe that 
having missed the release-2.0, we may not have another opportunity to remove it 
in the near future. Additionally, this option is not very user-friendly for 
custom connectors, as they would only discover the absence of certain methods 
at runtime. 

2. Directly remove the default implementations where throw exceptions directly: 
The benefit of this approach is that it informs users at compile time that they 
must implement certain methods. The downside is that we are "slightly" 
modifying the public API methods. Connectors that are very old and only 
compatible with the old API stack without integrating the new API stack would 
encounter compile-time errors (although in any case, they would ultimately face 
runtime errors, wouldn’t they?).

We would appreciate any insights or suggestions regarding this decision. Thank 
you!




Please note that similar situations exist with ModuleFactory and others; we 
won't discuss each one individually going forward.




--

    Best!
    Xuyang

Reply via email to