In the current implementation, TableDesc and TableMeta are implemented through interface and its implementation. This is unnecessary abstraction. For simplicity, this patch removes interfaces and merge them into the concrete classes.
In addition, TableDesc and TableMeta's role is ambiguous. This patch clarifies their roles as follows:
- TableMeta contains usual physical information which is used in workers.
- TableDesc contains logical information about a table and others which are not used in workers.
As a result, I've moved TableStats and Schema from TableMeta to TableDesc.
Besides, in the current implementation, Fragment also is subclassed of TableDesc. But, this relationship is wrong. Fragment is independent one of TableDesc. This patch changes this relationship. They are independent ones.