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)