Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id AB83C200C0B for ; Sun, 29 Jan 2017 23:22:30 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id AA1A5160B4F; Sun, 29 Jan 2017 22:22:30 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 00D66160B47 for ; Sun, 29 Jan 2017 23:22:29 +0100 (CET) Received: (qmail 44273 invoked by uid 500); 29 Jan 2017 22:22:29 -0000 Mailing-List: contact dev-help@quickstep.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@quickstep.incubator.apache.org Delivered-To: mailing list dev@quickstep.incubator.apache.org Received: (qmail 44262 invoked by uid 99); 29 Jan 2017 22:22:28 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Jan 2017 22:22:28 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 6563CC02A4 for ; Sun, 29 Jan 2017 22:22:28 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -7.019 X-Spam-Level: X-Spam-Status: No, score=-7.019 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 50RziBhF7udw for ; Sun, 29 Jan 2017 22:22:24 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id D2CC95FC5A for ; Sun, 29 Jan 2017 22:22:23 +0000 (UTC) Received: (qmail 44134 invoked by uid 99); 29 Jan 2017 22:22:23 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Jan 2017 22:22:23 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id EFC82DFC40; Sun, 29 Jan 2017 22:22:22 +0000 (UTC) From: jianqiao To: dev@quickstep.incubator.apache.org Reply-To: dev@quickstep.incubator.apache.org Message-ID: Subject: [GitHub] incubator-quickstep pull request #172: Query optimization with ExactFilter Content-Type: text/plain Date: Sun, 29 Jan 2017 22:22:22 +0000 (UTC) archived-at: Sun, 29 Jan 2017 22:22:30 -0000 GitHub user jianqiao opened a pull request: https://github.com/apache/incubator-quickstep/pull/172 Query optimization with ExactFilter This is a follow-up optimization based on the facility provided by LIPFilters. Note that LIP (lookahead information passing) is an optimization that we can inject efficient filters (e.g. bloom filters) into Select/HashJoin/Aggregate operators to pre-filter the input relations. This PR strength-reduces `HashJoin`s (including inner/semi/anti joins) into `FilterJoin`s. The semantics of a `FilterJoin` is simple: if certain conditions are met, we can build a bit vector from the build side and use the bit vector to _filter_ the probe side. The execution part is slightly more optimized: a `FilterJoin` will not always be converted into a `SelectOperator` plus a `LIPFilter` as its semantics indicates. Instead, in most situations we can avoid creating the `SelectOperator` by attaching the `LIPFilter` properly to some downstream operators – thus avoid unnecessary materialization of intermediate relations. Below shows the performance improvement for SSB scale factor 100 on a cloudlab machine: **SSB SF100**|**master (ms)**|**w/ ExactFilter (ms)** :-----:|:-----:|:-----: Q01|709|574 Q02|648|593 Q03|605|564 Q04|906|675 Q05|754|457 Q06|498|549 Q07|1687|1696 Q08|598|591 Q09|481|470 Q10|450|442 Q11|1208|882 Q12|876|656 Q13|515|475 Total|9937|8625 You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/incubator-quickstep exact-filter Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-quickstep/pull/172.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #172 ---- ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---