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

Elliot West updated HIVE-11230:
-------------------------------
    Description: 
The interface {{org.apache.hadoop.hive.metastore.IMetaStoreClient}} declares a 
method {{getPartition}} as:

{code}
Partition getPartition(String tblName, String dbName, List<String> partVals) 
throws NoSuchObjectException, MetaException, TException;
{code}

This is implemented in {{org.apache.hadoop.hive.metastore.HiveMetaStoreClient}} 
as:

{code}
public Partition getPartition(String db_name, String tbl_name, List<String> 
part_vals) throws NoSuchObjectException, MetaException, TException {
  return deepCopy(filterHook.filterPartition(client.get_partition(db_name, 
tbl_name, part_vals)));
}
{code}

Note that in the above code the param named {{db_name}} occupies the 
{{tbl_name}} equivalent in the {{IMetaStoreClient}} method and vice-versa.

The method called in {{HiveMetaStoreClient}} also seemingly expects {{db_name}} 
to appear first (see {{ThriftHiveMetastore.Iface.get_partition}}):
{code}
public Partition get_partition(String db_name, String tbl_name, List<String> 
part_vals) throws MetaException, NoSuchObjectException, 
org.apache.thrift.TException;
{code}

And following this all the way through to the implementation of 
{{org.apache.hadoop.hive.metastore.ObjectStore.getMTable(String, String)}} 
shows that the database name is ultimately taken from the first argument.

Therefore I propose that the order needs to be corrected on 
{{IMetaStoreClient}}.

  was:
The interface {{org.apache.hadoop.hive.metastore.IMetaStoreClient}} declares a 
method {{getPartition}} as:

{code}
Partition getPartition(String tblName, String dbName, List<String> partVals) 
throws NoSuchObjectException, MetaException, TException;
{code}

This is implemented in {{org.apache.hadoop.hive.metastore.HiveMetaStoreClient}} 
as:

{code}
  public Partition getPartition(String db_name, String tbl_name, List<String> 
part_vals) throws NoSuchObjectException, MetaException, TException {
    return deepCopy(filterHook.filterPartition(client.get_partition(db_name, 
tbl_name, part_vals)));
  }
{code}

Note that in the above code the param named {{db_name}} occupies the 
{{tbl_name}} equivalent in the {{IMetaStoreClient}} method and vice-versa.

The method called in {{HiveMetaStoreClient}} also seemingly expects {{db_name}} 
to appear first (see {{ThriftHiveMetastore.Iface.get_partition}}):
{code}
    public Partition get_partition(String db_name, String tbl_name, 
List<String> part_vals) throws MetaException, NoSuchObjectException, 
org.apache.thrift.TException;
{code}

And following this all the way through to the implementation of 
{{org.apache.hadoop.hive.metastore.ObjectStore.getMTable(String, String)}} 
shows that the database name is ultimately taken from the first argument.

Therefore I propose that the order needs to be corrected on 
{{IMetaStoreClient}}.


> IMetaStoreClient getPartition method arguments incorrectly named
> ----------------------------------------------------------------
>
>                 Key: HIVE-11230
>                 URL: https://issues.apache.org/jira/browse/HIVE-11230
>             Project: Hive
>          Issue Type: Bug
>    Affects Versions: 2.0.0
>            Reporter: Elliot West
>            Assignee: Elliot West
>            Priority: Minor
>              Labels: metastore
>         Attachments: HIVE-11230.1.patch
>
>
> The interface {{org.apache.hadoop.hive.metastore.IMetaStoreClient}} declares 
> a method {{getPartition}} as:
> {code}
> Partition getPartition(String tblName, String dbName, List<String> partVals) 
> throws NoSuchObjectException, MetaException, TException;
> {code}
> This is implemented in 
> {{org.apache.hadoop.hive.metastore.HiveMetaStoreClient}} as:
> {code}
> public Partition getPartition(String db_name, String tbl_name, List<String> 
> part_vals) throws NoSuchObjectException, MetaException, TException {
>   return deepCopy(filterHook.filterPartition(client.get_partition(db_name, 
> tbl_name, part_vals)));
> }
> {code}
> Note that in the above code the param named {{db_name}} occupies the 
> {{tbl_name}} equivalent in the {{IMetaStoreClient}} method and vice-versa.
> The method called in {{HiveMetaStoreClient}} also seemingly expects 
> {{db_name}} to appear first (see {{ThriftHiveMetastore.Iface.get_partition}}):
> {code}
> public Partition get_partition(String db_name, String tbl_name, List<String> 
> part_vals) throws MetaException, NoSuchObjectException, 
> org.apache.thrift.TException;
> {code}
> And following this all the way through to the implementation of 
> {{org.apache.hadoop.hive.metastore.ObjectStore.getMTable(String, String)}} 
> shows that the database name is ultimately taken from the first argument.
> Therefore I propose that the order needs to be corrected on 
> {{IMetaStoreClient}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to