Github user wgtmac commented on the issue:

    https://github.com/apache/orc/pull/120
  
    On Java side, ColumnStatistics and [Type]ColumnStatistics are very simple 
interfaces with minimum getter functions. It is the duty of 
ColumnStatisticsImpl class to define/implement most common interfaces and act 
as the base class in most writer implementations. Other 
[Type]ColumnStatisticsImpls just extend ColumnStatisticsImpl and implement 
[Type]ColumnStatistics to add their own logic to remove duplicate code. 
However, on C++ side, ColumnStatisticsImpl and [Type]ColumnStatisticsImpl have 
no inheritance relation like Java side. We cannot simply make 
[Type]ColumnStatisticsImpl inherit ColumnStatisticsImpl as it may introduce 
virtual inheritance issue because they have a common base class. Templates do 
not solve this issue as there is still no base class defining all common 
interfaces. In this case, we can expect that we need to use dynamic_cast almost 
everywhere if we want to use ColumnStatistcis abstraction; otherwise, we need 
to bind each [Type]ColumnStatistics to [Type]ColumnWr
 iter leading to another place with huge amount of duplicate code.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to