You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2022/11/29 08:10:00 UTC

[jira] [Commented] (IMPALA-11740) Incorrect results for partitioned Iceberg V2 tables when runtime filters are applied

    [ https://issues.apache.org/jira/browse/IMPALA-11740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640451#comment-17640451 ] 

ASF subversion and git services commented on IMPALA-11740:
----------------------------------------------------------

Commit d3c3ae41c4aeb2dec9f55dacb3dfc357d16713a3 in impala's branch refs/heads/master from Zoltan Borok-Nagy
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=d3c3ae41c ]

IMPALA-11740: Incorrect results for partitioned Iceberg V2 tables when runtime filters are applied

If an Iceberg V2 table is partitioned, and contains delete files,
then in a query that involves runtime filters on the partition columns
return empty result set.

E.g.:

  select count(*)
  from store_sales, date_dim
  where d_date_sk = ss_sold_date_sk and d_moy=2 and d_year=1998;

In the above query store_sales is partitioned by ss_sold_date_sk which
will be filtered by runtime filters created by the JOIN. If store_sales
has delete files then the above query returns empty result set.

The problem is that we are invoking PartitionPassesFilters() on these
Iceberg tables. It is usually a no-op for Iceberg tables, as the
template tuple is NULL. But when we have virtual columns a template
tuple has been created in HdfsScanPlanNode::InitTemplateTuple. For
Iceberg tables this tempalte tuple is incomplete, i.e. it doesn't
have the partition values set. This means the filters evaluate to
false and the files are getting filtered out, hence the query
produces an empty result set.

With this patch we don't invoke PartitionPassesFilters() on Iceberg
tables, only the Iceberg-specific IcebergPartitionPassesFilters()
gets invoked. Also added DCHECKs to ensure this.

Testing:
 * e2e tests added

Change-Id: I43f3e0a4df7c1ba6d8ea61410b570d8cf7b31ad3
Reviewed-on: http://gerrit.cloudera.org:8080/19274
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>


> Incorrect results for partitioned Iceberg V2 tables when runtime filters are applied
> ------------------------------------------------------------------------------------
>
>                 Key: IMPALA-11740
>                 URL: https://issues.apache.org/jira/browse/IMPALA-11740
>             Project: IMPALA
>          Issue Type: Bug
>            Reporter: Zoltán Borók-Nagy
>            Assignee: Zoltán Borók-Nagy
>            Priority: Major
>              Labels: impala-iceberg
>
> If an Iceberg V2 table is partitioned, and contains delete files, then in a query that involves runtime filters on the partition columns return empty result set.
> {noformat}
> select count(*) from store_sales, date_dim where d_date_sk = ss_sold_date_sk and d_moy=2 and d_year=1998;
> {noformat}
> In the above query store_sales is partitioned  by ss_sold_date_sk which will be filtered by runtime filters created by the JOIN. If store_sales has delete files then the above query returns empty result set.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org