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)