You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Sourabh Badhya (Jira)" <ji...@apache.org> on 2023/09/26 07:57:00 UTC
[jira] [Created] (HIVE-27731) Perform metadata delete when only static filters are present
Sourabh Badhya created HIVE-27731:
-------------------------------------
Summary: Perform metadata delete when only static filters are present
Key: HIVE-27731
URL: https://issues.apache.org/jira/browse/HIVE-27731
Project: Hive
Issue Type: Improvement
Reporter: Sourabh Badhya
Assignee: Sourabh Badhya
When the query has static filters only, try to perform a metadata delete directly rather than moving forward with positional delete.
Some relevant use cases where metadata deletes can be used -
{code:java}
DELETE FROM ice_table where id = 1;{code}
As seen above only filter is (id = 1). If in scenarios wherein the filter corresponds to a partition column then metadata delete is more efficient and does not generate additional files.
For partition evolution cases, if it is not possible to perform metadata delete then positional delete is done.
Some other optimisations that can be seen here is utilizing vectorized expressions for UDFs which provide vectorized expressions such as year -
{code:java}
DELETE FROM ice_table where id = 1 AND year(datecol) = 2015;{code}
Delete query with Multi-table scans will not optimized using this method since determination of where clauses happens at runtime.
A similar optimisation is seen in Spark where metadata delete is done whenever possible-
[https://github.com/apache/iceberg/blob/master/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java#L297-L389]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)