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)