Reza Safi created HIVE-23240:
--------------------------------

             Summary: loadDynamicPartition complains about static partitions 
even when they are provided in the description 
                 Key: HIVE-23240
                 URL: https://issues.apache.org/jira/browse/HIVE-23240
             Project: Hive
          Issue Type: Bug
            Reporter: Reza Safi


Hive is computing valid dynamic partitions here:
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java#L2853
However it later uses the specification provided by client here:
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java#L2879
(partSpec is exactly what client has provided and partSpec.keySet() contains 
both static and dynamic partitions key)
As a result the makeSpecFromName here will expect both static and dynamic 
partitions in requiredKeys:
https://github.com/apache/hive/blob/master/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/Warehouse.java#L580
However since the curPath that is passed to the above method is just like 
"somePath/dynamicPart=value" which miss the static partitions and a result the 
method  will ignore static partition keys then complains in log a warning that 
the static partition keys are missing. Returning false to Hive.java,  a log 
warning that "dynamicPart=value" is an invalid partition will be issued, 
despite the fact that the dynamic partition has been validated before:
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java#L2880
 
This will cause a silent data corruption in some clients. As an example spark 
will suffer from this when working with hive metastore in master branch.
It seems that if the goal was just to warn the client, there is no need to 
ignore the valid dynamic partition.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to