Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sJV4n-005EQn-0M for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Jun 2024 09:24:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sJV4j-00AQgZ-L0 for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Jun 2024 09:24:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sJV4j-00AQgR-AE for pgsql-hackers@lists.postgresql.org; Tue, 18 Jun 2024 09:24:26 +0000 Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sJV4h-002GJa-6l for pgsql-hackers@lists.postgresql.org; Tue, 18 Jun 2024 09:24:25 +0000 Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-62a2424ed00so60386137b3.1 for ; Tue, 18 Jun 2024 02:24:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718702661; x=1719307461; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6oycVgYfBuXdlfhEp/XpMr2fFKW32dfu1RbdVO1Jsuo=; b=lPDzvwtkCtDoOz04viTZ3gCMAyjr2tHMl2h92PALRKBYorIeZOwxjtNL2uEP256ZRv x9WA+thoVxprsiqjbOStzLDSCQQP+KMKo9mEH8NoPE6xkL78ZUB2ogSW9/809N6DF7P/ 1tvFI3Wz68VFxF5CAfLNG1yefDgdIA2UuA0PdtsnuNCcusvW820ocEWnx85ZjpcprHHc hRtHZP3VhlXtEDGCXZbN92862NhYMOWmMn0VhLMR7YTi8TOEEfng2R94ZzccBTdDOqSq UbxA29qH9CUH/tBUQUu2mjOknTlX0Ng8cA4h/eFtuMtTK6mFw/DyezrSec9o6hgK8EW4 3S7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718702661; x=1719307461; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6oycVgYfBuXdlfhEp/XpMr2fFKW32dfu1RbdVO1Jsuo=; b=dhW/wVvwBQ8PdDvwTuR4FZ836EO68RQOqQuzNCz8E16AbYcNsWCnsaGDFv3nnjxkj3 ZKW8slzDnbsovMhDxJLYE7XStbgxXZUk7HtTxToPNbT6ftkRn1A+0USXFfZL2k2U8uT0 8X8SERNgAf7719wpPjX011DcPu2yGrW8fqw3gO13ruCCD8QuLahDp7WfkNSKCygvxf2Y N+Ln1DEQwT3cPM3xDlml8wojFq7pCkRL2FyuFqcugiDTDS5RinQh3ls1DsmVNDFmK6N3 n87RmMjqgWQtD2WYlt6XFuRRGxAMg1lzyUot9nbIxPglhFKcRu+sDpa+n7caEPgrZ9Fv LF6A== X-Forwarded-Encrypted: i=1; AJvYcCUBz5hnI6BPXy5slXnnHx9R3d67hrBZuZiyKEcIvfPC4INuN14JYulxCSXqLJsinjlcAwwdtA+dKsxmiWkF1k7yzHfFBe8ARwSeE3PIt0REeoa7 X-Gm-Message-State: AOJu0YziSOaPvWWcxz9f7B3XtzhUJvkJyPJMIGbsuJBLo4OcjQ3Wn0rs iIED+8w+yVNTjwBoUP0BJMvOLeaylCyyOdzccbVvnFp3dRWYTofYnT7JXN5XEXesERQlLVTzm2p fHcWeonEsrOGuabIMWPwSeISPcq4= X-Google-Smtp-Source: AGHT+IG8ADJrAEZdss7ALTLos2D7RE7etyzXqOKYeHk474w7WuIAA6hE5w4cfhLzZ7JegAyBsGWUXgJeQDSCdn9aEks= X-Received: by 2002:a25:bcc3:0:b0:dff:2a28:9ae7 with SMTP id 3f1490d57ef6-dff2a289c0emr8043498276.65.1718702661422; Tue, 18 Jun 2024 02:24:21 -0700 (PDT) MIME-Version: 1.0 References: <9FBD029B-3E71-4D47-AB54-938C73A4668F@yandex-team.ru> <5641923793cef7706395a34e62538b75d05e498b.camel@post.pl> In-Reply-To: From: Richard Guo Date: Tue, 18 Jun 2024 17:24:05 +0800 Message-ID: Subject: Re: Should consider materializing the cheapest inner path in consider_parallel_nestloop() To: Tender Wang Cc: Tomasz Rybak , pgsql-hackers@lists.postgresql.org, robertmhaas@gmail.com, David Rowley Content-Type: multipart/mixed; boundary="0000000000009bf1ed061b26a54d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009bf1ed061b26a54d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jun 4, 2024 at 6:51=E2=80=AFPM Tender Wang wro= te: > Yeah, Richard commented the v1 patch about JOIN_UNIQUE_INNER in [1] > > * I think we should not consider materializing the cheapest inner path > if we're doing JOIN_UNIQUE_INNER, because in this case we have to > unique-ify the inner path. > > We don't consider material inner path if jointype is JOIN_UNIQUE_INNER in= match_unsorted_order(). > So here is as same logic as match_unsorted_order(). I added comments to e= xplain why. I looked through the v4 patch and found an issue. For the plan diff: + -> Nested Loop + -> Parallel Seq Scan on prt1_p1 t1_1 + -> Materialize + -> Sample Scan on prt1_p1 t2_1 + Sampling: system (t1_1.a) REPEATABLE (t1_1.b) + Filter: (t1_1.a =3D a) This does not seem correct to me. The inner path is parameterized by the outer rel, in which case it does not make sense to add a Materialize node on top of it. I updated the patch to include a check in consider_parallel_nestloop ensuring that inner_cheapest_total is not parameterized by outerrel before materializing it. I also tweaked the comments, test cases and commit message. Thanks Richard --0000000000009bf1ed061b26a54d Content-Type: application/octet-stream; name="v5-0001-Consider-materializing-the-cheapest-inner-path-in-parallel-nestloop.patch" Content-Disposition: attachment; filename="v5-0001-Consider-materializing-the-cheapest-inner-path-in-parallel-nestloop.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxk767q00 RnJvbSA0ZWE2MzYzZDIzMmJhMzkyOWZkN2VkZDE4ZTI3MTIxN2M4NTQ3NWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxOCBKdW4gMjAyNCAxNjoyNToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjVd IENvbnNpZGVyIG1hdGVyaWFsaXppbmcgdGhlIGNoZWFwZXN0IGlubmVyIHBhdGggaW4gcGFyYWxs ZWwKIG5lc3Rsb29wCgpXaGVuIGdlbmVyYXRpbmcgbm9uLXBhcmFsbGVsIG5lc3Rsb29wIHBhdGhz IGZvciBlYWNoIGF2YWlsYWJsZSBvdXRlcgpwYXRoLCB3ZSBhbHdheXMgY29uc2lkZXIgbWF0ZXJp YWxpemluZyB0aGUgY2hlYXBlc3QgaW5uZXIgcGF0aCBpZgpmZWFzaWJsZS4gIFNpbWlsYXJseSwg aW4gdGhpcyBwYXRjaCwgd2UgYWxzbyBjb25zaWRlciBtYXRlcmlhbGl6aW5nIHRoZQpjaGVhcGVz dCBpbm5lciBwYXRoIHdoZW4gYnVpbGRpbmcgcGFydGlhbCBuZXN0bG9vcCBwYXRocy4gIFRoaXMg YXBwcm9hY2gKcG90ZW50aWFsbHkgcmVkdWNlcyB0aGUgbmVlZCB0byByZXNjYW4gdGhlIGlubmVy IHNpZGUgb2YgYSBwYXJ0aWFsCm5lc3Rsb29wIHBhdGggZm9yIGVhY2ggb3V0ZXIgdHVwbGUuCi0t LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYyAgICAgICAgIHwgMjYgKysr KysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfcGFyYWxsZWwu b3V0IHwgMzAgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0 X3BhcmFsbGVsLnNxbCAgICAgIHwgMTAgKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBh dGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMKaW5kZXggNWJlOGRh OWUwOS4uMTFlMTI1M2JjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv am9pbnBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucGF0aC5jCkBA IC0yMDE0LDExICsyMDE0LDMyIEBAIGNvbnNpZGVyX3BhcmFsbGVsX25lc3Rsb29wKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJICAgSm9pblBhdGhFeHRyYURhdGEgKmV4dHJhKQogewogCUpvaW5U eXBlCXNhdmVfam9pbnR5cGUgPSBqb2ludHlwZTsKKwlQYXRoCSAgICppbm5lcl9jaGVhcGVzdF90 b3RhbCA9IGlubmVycmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCVBhdGgJICAgKm1hdHBhdGgg PSBOVUxMOwogCUxpc3RDZWxsICAgKmxjMTsKIAogCWlmIChqb2ludHlwZSA9PSBKT0lOX1VOSVFV RV9JTk5FUikKIAkJam9pbnR5cGUgPSBKT0lOX0lOTkVSOwogCisJLyoKKwkgKiBDb25zaWRlciBt YXRlcmlhbGl6aW5nIHRoZSBjaGVhcGVzdCBpbm5lciBwYXRoLCB1bmxlc3M6CisJICogMSkgd2Un cmUgZG9pbmcgSk9JTl9VTklRVUVfSU5ORVIsIGJlY2F1c2UgaW4gdGhpcyBjYXNlIHdlIGhhdmUg dG8KKwkgKiAgICB1bmlxdWUtaWZ5IHRoZSBjaGVhcGVzdCBpbm5lciBwYXRoLAorCSAqIDIpIGVu YWJsZV9tYXRlcmlhbCBpcyBvZmYsCisJICogMykgdGhlIGNoZWFwZXN0IGlubmVyIHBhdGggaXMg bm90IHBhcmFsbGVsLXNhZmUsCisJICogNCkgdGhlIGNoZWFwZXN0IGlubmVyIHBhdGggaXMgcGFy YW1ldGVyaXplZCBieSB0aGUgb3V0ZXIgcmVsLCBvcgorCSAqIDUpIHRoZSBjaGVhcGVzdCBpbm5l ciBwYXRoIG1hdGVyaWFsaXplcyBpdHMgb3V0cHV0IGFueXdheS4KKwkgKi8KKwlpZiAoc2F2ZV9q b2ludHlwZSAhPSBKT0lOX1VOSVFVRV9JTk5FUiAmJgorCQllbmFibGVfbWF0ZXJpYWwgJiYgaW5u ZXJfY2hlYXBlc3RfdG90YWwtPnBhcmFsbGVsX3NhZmUgJiYKKwkJIVBBVEhfUEFSQU1fQllfUkVM KGlubmVyX2NoZWFwZXN0X3RvdGFsLCBvdXRlcnJlbCkgJiYKKwkJIUV4ZWNNYXRlcmlhbGl6ZXNP dXRwdXQoaW5uZXJfY2hlYXBlc3RfdG90YWwtPnBhdGh0eXBlKSkKKwl7CisJCW1hdHBhdGggPSAo UGF0aCAqKQorCQkJY3JlYXRlX21hdGVyaWFsX3BhdGgoaW5uZXJyZWwsIGlubmVyX2NoZWFwZXN0 X3RvdGFsKTsKKwkJQXNzZXJ0KG1hdHBhdGgtPnBhcmFsbGVsX3NhZmUpOworCX0KKwogCWZvcmVh Y2gobGMxLCBvdXRlcnJlbC0+cGFydGlhbF9wYXRobGlzdCkKIAl7CiAJCVBhdGgJICAgKm91dGVy cGF0aCA9IChQYXRoICopIGxmaXJzdChsYzEpOwpAQCAtMjA3NSw2ICsyMDk2LDExIEBAIGNvbnNp ZGVyX3BhcmFsbGVsX25lc3Rsb29wKFBsYW5uZXJJbmZvICpyb290LAogCQkJCXRyeV9wYXJ0aWFs X25lc3Rsb29wX3BhdGgocm9vdCwgam9pbnJlbCwgb3V0ZXJwYXRoLCBtcGF0aCwKIAkJCQkJCQkJ CQkgIHBhdGhrZXlzLCBqb2ludHlwZSwgZXh0cmEpOwogCQl9CisKKwkJLyogQWxzbyBjb25zaWRl ciBtYXRlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgY2hlYXBlc3QgaW5uZXIgcGF0aCAqLworCQlpZiAo bWF0cGF0aCAhPSBOVUxMKQorCQkJdHJ5X3BhcnRpYWxfbmVzdGxvb3BfcGF0aChyb290LCBqb2lu cmVsLCBvdXRlcnBhdGgsIG1hdHBhdGgsCisJCQkJCQkJCQkgIHBhdGhrZXlzLCBqb2ludHlwZSwg ZXh0cmEpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z ZWxlY3RfcGFyYWxsZWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfcGFy YWxsZWwub3V0CmluZGV4IDg3MjczZmE2MzUuLmQxM2Y4MTJmMzYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3NlbGVjdF9wYXJhbGxlbC5vdXQKQEAgLTY1Myw2ICs2NTMsMzYgQEAg c2VsZWN0ICBjb3VudCgqKSBmcm9tIHRlbmsxLCB0ZW5rMiB3aGVyZSB0ZW5rMS51bmlxdWUxID0g dGVuazIudW5pcXVlMTsKIAogcmVzZXQgZW5hYmxlX2hhc2hqb2luOwogcmVzZXQgZW5hYmxlX25l c3Rsb29wOworLS0gdGVzdCBwYXJhbGxlbCBuZXN0bG9vcCBqb2luIHBhdGggd2l0aCBtYXRlcmlh bGl6YXRpb24gb2YgdGhlIGlubmVyIHBhdGguCithbHRlciB0YWJsZSB0ZW5rMiBzZXQgKHBhcmFs bGVsX3dvcmtlcnMgPSAwKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKwlzZWxlY3QgKiBmcm9tIHRl bmsxIHQxLCB0ZW5rMiB0MiB3aGVyZSB0MS50d28gPiB0Mi50d287CisgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgR2F0aGVyCisgICBXb3JrZXJzIFBsYW5uZWQ6IDQKKyAgIC0+ICBO ZXN0ZWQgTG9vcAorICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0MS50d28gPiB0Mi50d28pCisgICAg ICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gdGVuazEgdDEKKyAgICAgICAgIC0+ICBNYXRl cmlhbGl6ZQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsyIHQyCisoNyByb3dz KQorCistLSB0aGlzIGlzIG5vdCBwYXJhbGxlbC1zYWZlIGR1ZSB0byB0aGUgT0ZGU0VUIGNsYXVz ZSBpbiB0aGUgc3VicXVlcnkKK2V4cGxhaW4gKGNvc3RzIG9mZikKKwlzZWxlY3QgKiBmcm9tIHRl bmsxIHQxLCAoc2VsZWN0ICogZnJvbSB0ZW5rMiB0MiBvZmZzZXQgMCkgdDIgd2hlcmUgdDEudHdv ID4gdDIudHdvOworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29w CisgICBKb2luIEZpbHRlcjogKHQxLnR3byA+IHQyLnR3bykKKyAgIC0+ICBHYXRoZXIKKyAgICAg ICAgIFdvcmtlcnMgUGxhbm5lZDogNAorICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9u IHRlbmsxIHQxCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMiB0MgorKDcgcm93cykKKworYWx0ZXIgdGFibGUgdGVuazIgcmVzZXQgKHBhcmFsbGVsX3dv cmtlcnMpOwogLS0gdGVzdCBnYXRoZXIgbWVyZ2UKIHNldCBlbmFibGVfaGFzaGFnZyA9IGZhbHNl OwogZXhwbGFpbiAoY29zdHMgb2ZmKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2VsZWN0X3BhcmFsbGVsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9wYXJhbGxl bC5zcWwKaW5kZXggMjAzNzZjMDNmYS4uNjdkYWM3ZjYyYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc2VsZWN0X3BhcmFsbGVsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zZWxlY3RfcGFyYWxsZWwuc3FsCkBAIC0yNjYsNiArMjY2LDE2IEBAIHNlbGVjdCAgY291bnQo KikgZnJvbSB0ZW5rMSwgdGVuazIgd2hlcmUgdGVuazEudW5pcXVlMSA9IHRlbmsyLnVuaXF1ZTE7 CiByZXNldCBlbmFibGVfaGFzaGpvaW47CiByZXNldCBlbmFibGVfbmVzdGxvb3A7CiAKKy0tIHRl c3QgcGFyYWxsZWwgbmVzdGxvb3Agam9pbiBwYXRoIHdpdGggbWF0ZXJpYWxpemF0aW9uIG9mIHRo ZSBpbm5lciBwYXRoLgorYWx0ZXIgdGFibGUgdGVuazIgc2V0IChwYXJhbGxlbF93b3JrZXJzID0g MCk7CitleHBsYWluIChjb3N0cyBvZmYpCisJc2VsZWN0ICogZnJvbSB0ZW5rMSB0MSwgdGVuazIg dDIgd2hlcmUgdDEudHdvID4gdDIudHdvOworCistLSB0aGlzIGlzIG5vdCBwYXJhbGxlbC1zYWZl IGR1ZSB0byB0aGUgT0ZGU0VUIGNsYXVzZSBpbiB0aGUgc3VicXVlcnkKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKwlzZWxlY3QgKiBmcm9tIHRlbmsxIHQxLCAoc2VsZWN0ICogZnJvbSB0ZW5rMiB0MiBv ZmZzZXQgMCkgdDIgd2hlcmUgdDEudHdvID4gdDIudHdvOworYWx0ZXIgdGFibGUgdGVuazIgcmVz ZXQgKHBhcmFsbGVsX3dvcmtlcnMpOworCiAtLSB0ZXN0IGdhdGhlciBtZXJnZQogc2V0IGVuYWJs ZV9oYXNoYWdnID0gZmFsc2U7CiAKLS0gCjIuNDMuMAoK --0000000000009bf1ed061b26a54d--