I am not quite understand about this. I think whether we need to update cache or not, we should try to get metadata cache.  - If update_cache is false, we need to create new `HiveTableMetadata` object, but we can still reuse some `PartitionInfo` objects from returned cache entry.    - Otherwise return the entry we getted from cache directly. 