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 1qRm49-002wPG-Tg for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Aug 2023 04:05:30 +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 1qRm48-003Jeb-CZ for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Aug 2023 04:05:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qRm47-003JeT-TB for pgsql-hackers@lists.postgresql.org; Fri, 04 Aug 2023 04:05:28 +0000 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qRm45-000QyJ-Vk for pgsql-hackers@postgresql.org; Fri, 04 Aug 2023 04:05:27 +0000 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-584034c706dso18271837b3.1 for ; Thu, 03 Aug 2023 21:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691121925; x=1691726725; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mejN3+wfF0oQiSkJRM8pvZPxKMDy1xdOvjT5m61ihc0=; b=jNZnx1ZblkU0GKifV8cej3kOUI18+33T+S/+hbJckD2ZWzLIY3gn65A3PjSXgfMwjy s1BbyI9C580jRgrZoH9b/OGdTnTsml5OK6sPXTiLA9fUPQMs2HHLq7p71fQx8Q+i3dGd +haaeQNaI4E/Ppyjt9OcRsiXVrSRV0/XXMuB4W4odbKbsAJmEfGPEmlPxiLcgmQ051Tf AkwuVkDw7ItLZqcZxRIztfGJ3gzj1ZjBOVdpVu419m8WYbX+XkVkCczNE1/5VNyz6jzS gyRwxIxbHO1vAreXYxSSRInNY80IHG2p0QwF8TwM3+mhkVpauW3cvDAtna24w7yFBns3 3s7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691121925; x=1691726725; 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=mejN3+wfF0oQiSkJRM8pvZPxKMDy1xdOvjT5m61ihc0=; b=ZtMkbygsKeoDGTjuNIjbTLs1J//wYmLrLNroa7+0YJBgA3cOoLs3EwKrcYzU6q/cTi 3KlH0jvzLC8HQ//+l0bVN7Iuze7v87f7UVVYFy3/6jsUawV/kmYr/0+WAoBKsCzDKyVl pudB/j2IdsHy1YyzCUtNSPBIEP3ACKcISJdzEA0DspxQxmL8W6WOqUmRyWtNsbWdfhRS FYPcbz+cVGUCwyvGkIePbV+VOJL4o8nDbnXYqNLaUBaWRm6suzuUffJpQciuwOE5UgBY bwL4lBhBfhr+3EoiR4Tb+uQtfItr133+ONwOwUvf31qLXdgN4/TongetqH6dW9izzGC1 4jGw== X-Gm-Message-State: AOJu0Yx8mv2n1/SgQ61pKZVxm/aTdVwy3kB1tW1bUm4ii9r8TLj5/6de ZUegR8vZWFXEcE3SCKsc547od6pZ0RcsMgD/ZRTbp7zMuME= X-Google-Smtp-Source: AGHT+IFF1ZwJOB3KoJ4WRvhBiOrfDdv5/3iI8DU/chmUyfyUsN2/HAy8T7jakGHr9P/UNlAbL06I0GzHp+vtYTKe/cs= X-Received: by 2002:a81:4807:0:b0:586:9f6c:41a0 with SMTP id v7-20020a814807000000b005869f6c41a0mr549485ywa.14.1691121925376; Thu, 03 Aug 2023 21:05:25 -0700 (PDT) MIME-Version: 1.0 References: <20230731134837.dpugorvuhtv27b3t@jrouhaud> In-Reply-To: From: Richard Guo Date: Fri, 4 Aug 2023 12:05:14 +0800 Message-ID: Subject: Re: Improve join_search_one_level readibilty (one line change) To: David Rowley Cc: Julien Rouhaud , =?UTF-8?B?6Kyd5p2x6ZyW?= , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000a26b4d06021101de" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a26b4d06021101de Content-Type: multipart/alternative; boundary="000000000000a26b4b06021101dc" --000000000000a26b4b06021101dc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Aug 4, 2023 at 10:36=E2=80=AFAM David Rowley = wrote: > The whole lnext() stuff all feels a bit old now that Lists are arrays. > I think we'd be better adjusting the code to pass the List index where > we start from rather than the ListCell to start from. That way we can > use for_each_from() to iterate rather than for_each_cell(). What's > there today feels a bit crufty and there's some element of danger that > the given ListCell does not even belong to the given List. I think we can go even further to do the same for 'bushy plans' case, like the attached. Thanks Richard --000000000000a26b4b06021101dc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Fri, Aug 4, 2023 at 10:36=E2=80=AFAM D= avid Rowley <dgrowleyml@gmail.co= m> wrote:
The whole lnext() stuff all feels a bit old now that Lists are arrays.
I think we'd be better adjusting the code to pass the List index where<= br> we start from rather than the ListCell to start from.=C2=A0 That way we can=
use for_each_from() to iterate rather than for_each_cell().=C2=A0 What'= s
there today feels a bit crufty and there's some element of danger that<= br> the given ListCell does not even belong to the given List.

I think we can go even further to do the same for 'bush= y plans' case,
like the attached.

Thanks
Richard
= --000000000000a26b4b06021101dc-- --000000000000a26b4d06021101de Content-Type: application/octet-stream; name="v2-0001-join_search_one_level-tidyup.patch" Content-Disposition: attachment; filename="v2-0001-join_search_one_level-tidyup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkw2bj1p0 RnJvbSBmMjQwZTM1MTM0YWExZmExZjdlMjRlMDdmZjZjOGNkY2RmODVkODFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwZ3NxbC1ndW8gPHJpY2hhcmQuZ3VvQG9wZW5waWUuY29tPgpE YXRlOiBGcmksIDQgQXVnIDIwMjMgMTE6MjU6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYyXSBq b2luX3NlYXJjaF9vbmVfbGV2ZWwgdGlkeXVwCgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2pvaW5yZWxzLmMgfCA1NSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvam9pbnJlbHMuYwppbmRleCAwMTVhMGIzY2JlLi41YTFlOGJhNzNkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKQEAgLTI1LDggKzI1LDggQEAKIAogc3RhdGlj IHZvaWQgbWFrZV9yZWxzX2J5X2NsYXVzZV9qb2lucyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqb2xkX3JlbCwKLQkJCQkJCQkJCSAgTGlzdCAqb3RoZXJfcmVsc19s aXN0LAotCQkJCQkJCQkJICBMaXN0Q2VsbCAqb3RoZXJfcmVscyk7CisJCQkJCQkJCQkgIExpc3Qg Km90aGVyX3JlbHMsCisJCQkJCQkJCQkgIGludCBmaXJzdF9yZWxfaWR4KTsKIHN0YXRpYyB2b2lk IG1ha2VfcmVsc19ieV9jbGF1c2VsZXNzX2pvaW5zKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqb2xkX3JlbCwKIAkJCQkJCQkJCQkgIExpc3QgKm90aGVyX3JlbHMp OwpAQCAtOTMsNiArOTMsOCBAQCBqb2luX3NlYXJjaF9vbmVfbGV2ZWwoUGxhbm5lckluZm8gKnJv b3QsIGludCBsZXZlbCkKIAkJaWYgKG9sZF9yZWwtPmpvaW5pbmZvICE9IE5JTCB8fCBvbGRfcmVs LT5oYXNfZWNsYXNzX2pvaW5zIHx8CiAJCQloYXNfam9pbl9yZXN0cmljdGlvbihyb290LCBvbGRf cmVsKSkKIAkJeworCQkJaW50CQkJZmlyc3RfcmVsOworCiAJCQkvKgogCQkJICogVGhlcmUgYXJl IGpvaW4gY2xhdXNlcyBvciBqb2luIG9yZGVyIHJlc3RyaWN0aW9ucyByZWxldmFudCB0bwogCQkJ ICogdGhpcyByZWwsIHNvIGNvbnNpZGVyIGpvaW5zIGJldHdlZW4gdGhpcyByZWwgYW5kIChvbmx5 KSB0aG9zZQpAQCAtMTA2LDI0ICsxMDgsMTIgQEAgam9pbl9zZWFyY2hfb25lX2xldmVsKFBsYW5u ZXJJbmZvICpyb290LCBpbnQgbGV2ZWwpCiAJCQkgKiB0byBlYWNoIGluaXRpYWwgcmVsIHRoZXkg ZG9uJ3QgYWxyZWFkeSBpbmNsdWRlIGJ1dCBoYXZlIGEgam9pbgogCQkJICogY2xhdXNlIG9yIHJl c3RyaWN0aW9uIHdpdGguCiAJCQkgKi8KLQkJCUxpc3QJICAgKm90aGVyX3JlbHNfbGlzdDsKLQkJ CUxpc3RDZWxsICAgKm90aGVyX3JlbHM7Ci0KIAkJCWlmIChsZXZlbCA9PSAyKQkJLyogY29uc2lk ZXIgcmVtYWluaW5nIGluaXRpYWwgcmVscyAqLwotCQkJewotCQkJCW90aGVyX3JlbHNfbGlzdCA9 IGpvaW5yZWxzW2xldmVsIC0gMV07Ci0JCQkJb3RoZXJfcmVscyA9IGxuZXh0KG90aGVyX3JlbHNf bGlzdCwgcik7Ci0JCQl9Ci0JCQllbHNlCQkJCS8qIGNvbnNpZGVyIGFsbCBpbml0aWFsIHJlbHMg Ki8KLQkJCXsKLQkJCQlvdGhlcl9yZWxzX2xpc3QgPSBqb2lucmVsc1sxXTsKLQkJCQlvdGhlcl9y ZWxzID0gbGlzdF9oZWFkKG90aGVyX3JlbHNfbGlzdCk7Ci0JCQl9CisJCQkJZmlyc3RfcmVsID0g Zm9yZWFjaF9jdXJyZW50X2luZGV4KHIpICsgMTsKKwkJCWVsc2UKKwkJCQlmaXJzdF9yZWwgPSAw OwogCi0JCQltYWtlX3JlbHNfYnlfY2xhdXNlX2pvaW5zKHJvb3QsCi0JCQkJCQkJCQkgIG9sZF9y ZWwsCi0JCQkJCQkJCQkgIG90aGVyX3JlbHNfbGlzdCwKLQkJCQkJCQkJCSAgb3RoZXJfcmVscyk7 CisJCQltYWtlX3JlbHNfYnlfY2xhdXNlX2pvaW5zKHJvb3QsIG9sZF9yZWwsIGpvaW5yZWxzWzFd LCBmaXJzdF9yZWwpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY3LDggKzE1Nyw3IEBAIGpvaW5f c2VhcmNoX29uZV9sZXZlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxldmVsKQogCQlmb3JlYWNo KHIsIGpvaW5yZWxzW2tdKQogCQl7CiAJCQlSZWxPcHRJbmZvICpvbGRfcmVsID0gKFJlbE9wdElu Zm8gKikgbGZpcnN0KHIpOwotCQkJTGlzdAkgICAqb3RoZXJfcmVsc19saXN0OwotCQkJTGlzdENl bGwgICAqb3RoZXJfcmVsczsKKwkJCWludAkJCWZpcnN0X3JlbDsKIAkJCUxpc3RDZWxsICAgKnIy OwogCiAJCQkvKgpAQCAtMTgwLDE5ICsxNjksMTIgQEAgam9pbl9zZWFyY2hfb25lX2xldmVsKFBs YW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWwpCiAJCQkJIWhhc19qb2luX3Jlc3RyaWN0aW9uKHJv b3QsIG9sZF9yZWwpKQogCQkJCWNvbnRpbnVlOwogCi0JCQlpZiAoayA9PSBvdGhlcl9sZXZlbCkK LQkJCXsKLQkJCQkvKiBvbmx5IGNvbnNpZGVyIHJlbWFpbmluZyByZWxzICovCi0JCQkJb3RoZXJf cmVsc19saXN0ID0gam9pbnJlbHNba107Ci0JCQkJb3RoZXJfcmVscyA9IGxuZXh0KG90aGVyX3Jl bHNfbGlzdCwgcik7Ci0JCQl9CisJCQlpZiAoayA9PSBvdGhlcl9sZXZlbCkJCS8qIG9ubHkgY29u c2lkZXIgcmVtYWluaW5nIHJlbHMgKi8KKwkJCQlmaXJzdF9yZWwgPSBmb3JlYWNoX2N1cnJlbnRf aW5kZXgocikgKyAxOwogCQkJZWxzZQotCQkJewotCQkJCW90aGVyX3JlbHNfbGlzdCA9IGpvaW5y ZWxzW290aGVyX2xldmVsXTsKLQkJCQlvdGhlcl9yZWxzID0gbGlzdF9oZWFkKG90aGVyX3JlbHNf bGlzdCk7Ci0JCQl9CisJCQkJZmlyc3RfcmVsID0gMDsKIAotCQkJZm9yX2VhY2hfY2VsbChyMiwg b3RoZXJfcmVsc19saXN0LCBvdGhlcl9yZWxzKQorCQkJZm9yX2VhY2hfZnJvbShyMiwgam9pbnJl bHNbb3RoZXJfbGV2ZWxdLCBmaXJzdF9yZWwpCiAJCQl7CiAJCQkJUmVsT3B0SW5mbyAqbmV3X3Jl bCA9IChSZWxPcHRJbmZvICopIGxmaXJzdChyMik7CiAKQEAgLTI4Niw5ICsyNjgsOCBAQCBqb2lu X3NlYXJjaF9vbmVfbGV2ZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCBsZXZlbCkKICAqIGF1dG9t YXRpY2FsbHkgZW5zdXJlcyB0aGF0IGVhY2ggbmV3IGpvaW5yZWwgaXMgb25seSBhZGRlZCB0byB0 aGUgbGlzdCBvbmNlLgogICoKICAqICdvbGRfcmVsJyBpcyB0aGUgcmVsYXRpb24gZW50cnkgZm9y IHRoZSByZWxhdGlvbiB0byBiZSBqb2luZWQKLSAqICdvdGhlcl9yZWxzX2xpc3QnOiBhIGxpc3Qg Y29udGFpbmluZyB0aGUgb3RoZXIKLSAqIHJlbHMgdG8gYmUgY29uc2lkZXJlZCBmb3Igam9pbmlu ZwotICogJ290aGVyX3JlbHMnOiB0aGUgZmlyc3QgY2VsbCB0byBiZSBjb25zaWRlcmVkCisgKiAn b3RoZXJfcmVscyc6IGEgbGlzdCBjb250YWluaW5nIHRoZSBvdGhlciByZWxzIHRvIGJlIGNvbnNp ZGVyZWQgZm9yIGpvaW5pbmcKKyAqICdmaXJzdF9yZWxfaWR4JzogdGhlIGZpcnN0IHJlbCB0byBi ZSBjb25zaWRlcmVkIGluICdvdGhlcl9yZWxzJwogICoKICAqIEN1cnJlbnRseSwgdGhpcyBpcyBv bmx5IHVzZWQgd2l0aCBpbml0aWFsIHJlbHMgaW4gb3RoZXJfcmVscywgYnV0IGl0CiAgKiB3aWxs IHdvcmsgZm9yIGpvaW5pbmcgdG8gam9pbnJlbHMgdG9vLgpAQCAtMjk2LDEyICsyNzcsMTIgQEAg am9pbl9zZWFyY2hfb25lX2xldmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWwpCiBzdGF0 aWMgdm9pZAogbWFrZV9yZWxzX2J5X2NsYXVzZV9qb2lucyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCSAgUmVsT3B0SW5mbyAqb2xkX3JlbCwKLQkJCQkJCSAgTGlzdCAqb3RoZXJfcmVsc19saXN0 LAotCQkJCQkJICBMaXN0Q2VsbCAqb3RoZXJfcmVscykKKwkJCQkJCSAgTGlzdCAqb3RoZXJfcmVs cywKKwkJCQkJCSAgaW50IGZpcnN0X3JlbF9pZHgpCiB7CiAJTGlzdENlbGwgICAqbDsKIAotCWZv cl9lYWNoX2NlbGwobCwgb3RoZXJfcmVsc19saXN0LCBvdGhlcl9yZWxzKQorCWZvcl9lYWNoX2Zy b20obCwgb3RoZXJfcmVscywgZmlyc3RfcmVsX2lkeCkKIAl7CiAJCVJlbE9wdEluZm8gKm90aGVy X3JlbCA9IChSZWxPcHRJbmZvICopIGxmaXJzdChsKTsKIAotLSAKMi4zMi4wCgo= --000000000000a26b4d06021101de--