Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aMeiL-0006gu-Ql for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jan 2016 16:37:33 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aMeiL-0003iL-DY for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jan 2016 16:37:33 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aMeh0-0002E7-Cs for pgsql-hackers@postgresql.org; Fri, 22 Jan 2016 16:36:10 +0000 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aMegx-0007mq-90 for pgsql-hackers@postgresql.org; Fri, 22 Jan 2016 16:36:09 +0000 Received: by mail-wm0-x232.google.com with SMTP id u188so25466267wmu.1 for ; Fri, 22 Jan 2016 08:36:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type; bh=YcVgG3QzaRDcVPirIrsz/PeNyDDdDgMHw8z4r5nlNg4=; b=C6aWz3CDAVbBgqR1OuUbqO/aGIchwcrbc9f8GyNnILvf1j68p4H01XvpkWT31k/veH JZYtcO4bVI7KCW9MFXCW5jR1ybz0U3i7ZUJGP8Ca7Qc/iQFnuKBE1fbxzU90pVuNT4er USb34C2cU8DdFeJPh2d3HzvKyUjJq0ul9TtFPObeclbJDqofUJX+3E8k1N8LXZDWCgXA wlcwtI1MscQIEn8mlPVIXGv3P14v3NhLGQdUgtTU4gAuqgsVjxOdcYgclo0lYwQsTqgw KNJbFZBYyvrJmjmfmcvdrVuz+C9zOzik8qnjNZHIBTN94Xr9u79wV6ZK2Zp1C47CUQ0u Ugbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-type; bh=YcVgG3QzaRDcVPirIrsz/PeNyDDdDgMHw8z4r5nlNg4=; b=jTxIP1jqE/5o+jsQgHpkUS1biT4PT2Y3gVubqToXfCirNlEkNfuSMnYxnE0OyDvYBD fLVNJDCS+ZrprpP74v1XWl1pgqQ3Et4DLioUDpbSsVKtCwPX1m3p/sjR/HZ7DwZqHLWK 7zRRKI2w1nXy73jNRtK8dnXOg/N7kWoRfRUg/qNx0i5U9paMn9z507e07jiVl0cQClL6 MG71O/mdF7F6j+zTCj+d2GX25DItX3FvubaPyIAHA7aljV+p9sdFNhQH5fQjQEq9GFx3 TWJn/7TI7MJHPJbdycbGoiy15AAN5sERWUZLzkGYnCUEW/hn8g9BMaRv5lSNvFWHZ6BQ kgTw== X-Gm-Message-State: AG10YOTrbeU4I8LXFG5bPMsy+8tp395zuz53cHoB6dN+dcZ7JCMRglFUJPdTY7a2kzT7L7+jscV8RD7wn1QChZS038F2WMwLM5xGqD6rEdzDD5v/iLn7ZoUCHpjDydzCWokjDSiuylC2y3QsdzAnk83ZQzLa5J/OKpl7dOZJCoaHS9wCIseMRMSKgILfXVYlViuu6BoVHr/W X-Received: by 10.194.203.99 with SMTP id kp3mr4144016wjc.3.1453480565580; Fri, 22 Jan 2016 08:36:05 -0800 (PST) Received: from [10.137.1.13] (ip-78-45-216-26.net.upcbroadband.cz. [78.45.216.26]) by smtp.gmail.com with ESMTPSA id r10sm6642429wjz.24.2016.01.22.08.36.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Jan 2016 08:36:04 -0800 (PST) Subject: Re: Performance improvement for joins where outer side is unique To: David Rowley , Simon Riggs References: <20150320.121140.148610378.horiguchi.kyotaro@lab.ntt.co.jp> <27152324.eFKJb4Khb5@dinodell> <8608754a32d1325c2f83ba8b1df71585@xs4all.nl> <55DA1F9F.5040204@2ndquadrant.com> <5085.1440375543@sss.pgh.pa.us> <8907.1440383377@sss.pgh.pa.us> <56718B15.6060507@2ndquadrant.com> <5671FF0D.2010403@2ndquadrant.com> Cc: Tom Lane , PostgreSQL-development From: Tomas Vondra Message-ID: <56A25A72.2090505@2ndquadrant.com> Date: Fri, 22 Jan 2016 17:36:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------080202060501060006060503" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------080202060501060006060503 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 12/17/2015 02:17 PM, David Rowley wrote: > On 17 December 2015 at 19:11, Simon Riggs > wrote: > > On 17 December 2015 at 00:17, Tomas Vondra > > > wrote: > > I'd go with match_first_tuple_only. > > > +1 > > unique_inner is a state that has been detected, > match_first_tuple_only is the action we take as a result. > > > Ok great. I've made it so in the attached. This means the comment in the > join code where we perform the skip can be a bit less verbose and all > the details can go in where we're actually setting the > match_first_tuple_only to true. OK. I've looked at the patch again today, and it seems broken bv 45be99f8 as the partial paths were not passing the unique_inner to the create_*_path() functions. The attached patch should fix that. Otherwise I think the patch is ready for committer - I think this is a valuable optimization and I see nothing wrong with the code. Any objections to marking it accordingly? regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------080202060501060006060503 Content-Type: application/x-patch; name="unijoin-partial.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="unijoin-partial.patch" ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5w YXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucGF0aC5j CmluZGV4IGJlNDEwZDIuLjFlYzJkZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYwpAQCAtNDExLDcgKzQxMSw3 IEBAIHRyeV9wYXJ0aWFsX25lc3Rsb29wX3BhdGgoUGxhbm5lckluZm8gKnJv b3QsCiAJICogQmVmb3JlIGNyZWF0aW5nIGEgcGF0aCwgZ2V0IGEgcXVpY2sg bG93ZXIgYm91bmQgb24gd2hhdCBpdCBpcyBsaWtlbHkKIAkgKiB0byBjb3N0 LiAgQmFpbCBvdXQgcmlnaHQgYXdheSBpZiBpdCBsb29rcyB0ZXJyaWJsZS4K IAkgKi8KLQlpbml0aWFsX2Nvc3RfbmVzdGxvb3Aocm9vdCwgJndvcmtzcGFj ZSwgam9pbnR5cGUsCisJaW5pdGlhbF9jb3N0X25lc3Rsb29wKHJvb3QsICZ3 b3Jrc3BhY2UsIGpvaW50eXBlLCBleHRyYS0+dW5pcXVlX2lubmVyLAogCQkJ CQkJICBvdXRlcl9wYXRoLCBpbm5lcl9wYXRoLAogCQkJCQkJICBleHRyYS0+ c2ppbmZvLCAmZXh0cmEtPnNlbWlmYWN0b3JzKTsKIAlpZiAoIWFkZF9wYXJ0 aWFsX3BhdGhfcHJlY2hlY2soam9pbnJlbCwgd29ya3NwYWNlLnRvdGFsX2Nv c3QsIHBhdGhrZXlzKSkKQEAgLTQyMiw2ICs0MjIsNyBAQCB0cnlfcGFydGlh bF9uZXN0bG9vcF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJIGNyZWF0 ZV9uZXN0bG9vcF9wYXRoKHJvb3QsCiAJCQkJCQkJCSAgam9pbnJlbCwKIAkJ CQkJCQkJICBqb2ludHlwZSwKKwkJCQkJCQkJICBleHRyYS0+dW5pcXVlX2lu bmVyLAogCQkJCQkJCQkgICZ3b3Jrc3BhY2UsCiAJCQkJCQkJCSAgZXh0cmEt PnNqaW5mbywKIAkJCQkJCQkJICAmZXh0cmEtPnNlbWlmYWN0b3JzLApAQCAt NjIyLDYgKzYyMyw3IEBAIHRyeV9wYXJ0aWFsX2hhc2hqb2luX3BhdGgoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkgY3JlYXRlX2hhc2hqb2luX3BhdGgocm9v dCwKIAkJCQkJCQkJICBqb2lucmVsLAogCQkJCQkJCQkgIGpvaW50eXBlLAor CQkJCQkJCQkgIGV4dHJhLT51bmlxdWVfaW5uZXIsCiAJCQkJCQkJCSAgJndv cmtzcGFjZSwKIAkJCQkJCQkJICBleHRyYS0+c2ppbmZvLAogCQkJCQkJCQkg ICZleHRyYS0+c2VtaWZhY3RvcnMsCg== --------------080202060501060006060503 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------080202060501060006060503--