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.96) (envelope-from ) id 1vLq5Z-00Bw43-1J for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Nov 2025 21:51:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vLq5X-00FifZ-2U for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Nov 2025 21:51:44 +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.96) (envelope-from ) id 1vLq5X-00FifR-0t for pgsql-hackers@lists.postgresql.org; Wed, 19 Nov 2025 21:51:43 +0000 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vLq5U-000Pbn-2S for pgsql-hackers@postgresql.org; Wed, 19 Nov 2025 21:51:42 +0000 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-7ad1cd0db3bso167795b3a.1 for ; Wed, 19 Nov 2025 13:51:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763589100; x=1764193900; darn=postgresql.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VK7uXM8f9JfBo0JiEU+10SM7qgMp4/nORdE9K/9o5eE=; b=SSmvuvp882VOJwlgkJDUZ1uxrY8rsTDgk7GNiKRxxTgXBIy2EEe5qT7OXJ5omyvCQY whiCPH87bpkgwAsxC5ztS/h4zD4L8soKXzM+pSLRMtzmerlwEyYgKTH8ursHl9WR7TGN efcDm23ux0DjseWezEufkmeGrjfYfJtrzfcocylU20O8S2YF6WIg41k7q4k+O1hsEYCk 5gM2XFByFVGbEtMwmQxdCIiqivFVy8N0yRuR5OvAS4LbumBAmj04JCjWc41eWrAb/gpc xMitz5TazoI6QyKKs8i0x6/hHz+ourjQWmxDf9NaSCzOelGiymp+0iZpxMVBnBC6QcZm RZSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763589100; x=1764193900; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VK7uXM8f9JfBo0JiEU+10SM7qgMp4/nORdE9K/9o5eE=; b=PbQv5tZ021IHe40vmr/cLGogSTfvhXE15BADRHxLD5re42RutpBgn9MlGyFxhSMnYK JtqwVfcT1Ymo//GtCDqQ22b3jekN5JYRvffMXd7dAGBrAJV0C+ifiA/x8qMy/gx9a0Pf dINleGNWNw150Cb6kCKGd0+ulvvBhNj2gwQ/291sUu/1uy3F/7qaIKhOwbthobf+TjKz hHpbjq10U1kprJNl2EuSIHmiKYJKYHPOESz52r+DPMjX0dHtBKDG/emJGOrRdHtZW+9U YEI7JF8ALvnshc7JjvbGrw5fLAPwVWhC59Yu8kH7lJEt519d1BlI4oF/Q+JhymZZjbqJ ElMw== X-Forwarded-Encrypted: i=1; AJvYcCVBvbzRI8Vnn3UxHbK9oTIgL8mD6BP6uuduUBmFhy6AZFdSTCKOpGoMfCMh22xdNlZj8uSg5UlbKkyA9N6Y@postgresql.org X-Gm-Message-State: AOJu0YwFLja+4qQKbp3lJ8fm4IUMgNLVoNYLV/EuSBZjiDgjM0Z32Tuq rHrwQt8VS+Jyr6hwbrmQDKoaqbFnJj3X6ZIhgyXk8qCBpKfJIp4Q5gas X-Gm-Gg: ASbGncuBx+QlRq8/uaDRLYZ6qhVhHbYMXEM/VE9X72zwdGxodc5puxOXFoIULpFtI0M W81uHffIWDEDP3JCyRRy7WssomRAKrAScsG87OjEDehkGVRp7r0JQXKr8USurCFe6QIFE440b8m Erh1moeuCTHkyhRjPwtFk4n2aPM7COAO6jvXXZKuHT6S96n4k+w/cIZtomjlX52y7LmiewQ5Tsd YWvI3B0uNox25c0RUmW5SaK41cr0JiUfkgVC9bMFXBi/sp7aKwF/QuTR8IpJZqn5YEyxmDeJUD9 Xfp4rX0NYHzaSyKnvAKHhYz0nL0QyYGzCIyWaI7dDDK8KV3J09FW2DncoyGOhhkWv71SJ2FEGJK uN7ynEsVk1ed7PsmYLj9n1gaZfj4zBgepLSNxoPiplnLSJGiIAig0b9vEZZjYAI3benX5y2qDsx 69jEyZ/OrYi4XgjwDAEvntoBxW+eBsvd3YHg== X-Google-Smtp-Source: AGHT+IF30c8PzpYV3CM1OjI2tUj69R1zrut82m82Uyem6i2QbKODT26vAY9W0SsUxZioovNXDVw2pw== X-Received: by 2002:a05:7022:7f11:b0:11b:9386:826c with SMTP id a92af1059eb24-11c938a4d00mr253900c88.41.1763589098437; Wed, 19 Nov 2025 13:51:38 -0800 (PST) Received: from localhost ([2804:14d:328a:a59c:3cc0:cb72:b12b:4816]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11c93e6da4dsm1398677c88.9.2025.11.19.13.51.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Nov 2025 13:51:37 -0800 (PST) Content-Type: multipart/mixed; boundary=c76db600636f81f156e46d51d5ed0158382c047f16d5e7a69c2125e4a5b5 Mime-Version: 1.0 Date: Wed, 19 Nov 2025 18:51:35 -0300 Message-Id: Cc: "Alena Rybakina" , "Pgsql Hackers" Subject: Re: Asynchronous MergeAppend From: "Matheus Alcantara" To: "Alexander Pyhalov" , "Matheus Alcantara" X-Mailer: aerc 0.21.0 References: <59be194c5a409fb9fc9f2031581b8a44@postgrespro.ru> <764dd8b8-6374-4f5a-aac7-d8e3f6ebe5fd@postgrespro.ru> <159b591411bb2c81332018927acbd509@postgrespro.ru> <2fb1d9923b6995492e7b163e6cb95402@postgrespro.ru> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --c76db600636f81f156e46d51d5ed0158382c047f16d5e7a69c2125e4a5b5 Content-Type: multipart/alternative; boundary=b90ee82cf39a4ef1ef0f663a5a6264756f3d9b1cac3144b3ea850b7e806a --b90ee82cf39a4ef1ef0f663a5a6264756f3d9b1cac3144b3ea850b7e806a Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Tue Nov 18, 2025 at 4:14 AM -03, Alexander Pyhalov wrote: > Updated the first patch. > Thanks for the new version. Some new comments. v7-0002-MergeAppend-should-support-Async-Foreign-Scan-subpla.patch: 1. Should be "nasyncplans" instead of "nplans"? ExecInitAppend use "nasyncplans" to allocate the as_asyncresults array. + mergestate->ms_asyncresults =3D (TupleTableSlot **) + palloc0(nplans * sizeof(TupleTableSlot *)); + 2. I think that this comment should be updated. IIUC ms_valid_subplans may not be all subplans because classify_matching_subplans() may move async ones to ms_valid_asyncplans. Is that right? /* * If we've yet to determine the valid subplans then do so now. If * run-time pruning is disabled then the valid subplans will always be * set to all subplans. */ 3. This code comment should also mention the Assert(!bms_is_member(...));? + /* The result should be a TupleTableSlot or NULL. */ + Assert(slot =3D=3D NULL || IsA(slot, TupleTableSlot)); + Assert(!bms_is_member(areq->request_index, node->ms_has_asyncresults)); 4. It's worth include bms_num_members(node->ms_needrequest) <=3D 0 check on ExecMergeAppendAsyncRequest() as an early return? IIUC it would avoid the bms_is_member(), bms_next_member() and bms_is_empty(needrequest) calls. ExecMergeAppendAsyncRequest(MergeAppendState *node, int mplan) Bitmapset *needrequest; int i; + if (bms_num_members(node->ms_needrequest) <=3D 0) + return false; + I'm attaching a diff with some cosmetic changes of indentation and comments. Feel free to include on the patch or not. -- Matheus Alcantara EDB: http://www.enterprisedb.com --b90ee82cf39a4ef1ef0f663a5a6264756f3d9b1cac3144b3ea850b7e806a-- --c76db600636f81f156e46d51d5ed0158382c047f16d5e7a69c2125e4a5b5 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=diff.txt Content-Type: text/plain; charset=utf-8; name=diff.txt ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBjODllMmQyNzg3Zi4uYTJlZDVmNzFhMzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTExOTgsNiArMTE5OCw5IEBAIGNsYXNz aWZ5X21hdGNoaW5nX3N1YnBsYW5zKEFwcGVuZFN0YXRlICpub2RlKQogCX0KIAogCS8qIE5vIHZh bGlkIGFzeW5jIHN1YnBsYW5zIGlkZW50aWZpZWQuICovCi0JaWYgKCFjbGFzc2lmeV9tYXRjaGlu Z19zdWJwbGFuc19jb21tb24oJm5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLCBub2RlLT5hc19hc3lu Y3BsYW5zLCAmbm9kZS0+YXNfdmFsaWRfYXN5bmNwbGFucykpCisJaWYgKCFjbGFzc2lmeV9tYXRj aGluZ19zdWJwbGFuc19jb21tb24oCisJCQkJCQkJCQkJICAgJm5vZGUtPmFzX3ZhbGlkX3N1YnBs YW5zLAorCQkJCQkJCQkJCSAgIG5vZGUtPmFzX2FzeW5jcGxhbnMsCisJCQkJCQkJCQkJICAgJm5v ZGUtPmFzX3ZhbGlkX2FzeW5jcGxhbnMpKQogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAwOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA3ZGI0MWZiZjQwZi4u ZmViMjVhODEzYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC01 MzMsNyArNTMzLDEwIEBAIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKE1lcmdlQXBwZW5kU3Rh dGUgKm5vZGUpCiAJfQogCiAJLyogTm8gdmFsaWQgYXN5bmMgc3VicGxhbnMgaWRlbnRpZmllZC4g Ki8KLQlpZiAoIWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1vbigmbm9kZS0+bXNfdmFs aWRfc3VicGxhbnMsIG5vZGUtPm1zX2FzeW5jcGxhbnMsICZub2RlLT5tc192YWxpZF9hc3luY3Bs YW5zKSkKKwlpZiAoIWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1vbigKKwkJCQkJCQkJ CQkgICAmbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMsCisJCQkJCQkJCQkJICAgbm9kZS0+bXNfYXN5 bmNwbGFucywKKwkJCQkJCQkJCQkgICAmbm9kZS0+bXNfdmFsaWRfYXN5bmNwbGFucykpCiAJCW5v ZGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsKIH0KIApAQCAtNzIxLDExICs3MjQsMTQgQEAgRXhl Y0FzeW5jTWVyZ2VBcHBlbmRSZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpCiAJewogCQkvKiBU aGUgZW5kaW5nIHN1YnBsYW4gd291bGRuJ3QgaGF2ZSBiZWVuIHBlbmRpbmcgZm9yIGEgY2FsbGJh Y2suICovCiAJCUFzc2VydCghYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyk7Ci0JCW5vZGUtPm1zX2Fz eW5jcmVtYWluID0gYm1zX2RlbF9tZW1iZXIobm9kZS0+bXNfYXN5bmNyZW1haW4sIGFyZXEtPnJl cXVlc3RfaW5kZXgpOworCQlub2RlLT5tc19hc3luY3JlbWFpbiA9IGJtc19kZWxfbWVtYmVyKG5v ZGUtPm1zX2FzeW5jcmVtYWluLAorCQkJCQkJCQkJCQkgIGFyZXEtPnJlcXVlc3RfaW5kZXgpOwog CQlyZXR1cm47CiAJfQogCi0Jbm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0cyA9IGJtc19hZGRfbWVt YmVyKG5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMsIGFyZXEtPnJlcXVlc3RfaW5kZXgpOworCS8q IE1hcmsgdGhhdCB0aGUgYXN5bmMgcmVxdWVzdCBoYXMgYSByZXN1bHQgKi8KKwlub2RlLT5tc19o YXNfYXN5bmNyZXN1bHRzID0gYm1zX2FkZF9tZW1iZXIobm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0 cywKKwkJCQkJCQkJCQkJICAgYXJlcS0+cmVxdWVzdF9pbmRleCk7CiAJLyogU2F2ZSByZXN1bHQg c28gd2UgY2FuIHJldHVybiBpdC4gKi8KIAlub2RlLT5tc19hc3luY3Jlc3VsdHNbYXJlcS0+cmVx dWVzdF9pbmRleF0gPSBzbG90OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDJiZWY1NDU1MGEz Li4xZGM3ZTllNjE0NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE1ODUsNyArMTU4NSw5IEBA IEdldE5lZWRSZXF1ZXN0KFBsYW5TdGF0ZSAqcHMpCiAKIC8qIENvbW1vbiBwYXJ0IG9mIGNsYXNz aWZ5X21hdGNoaW5nX3N1YnBsYW5zKCkgZm9yIEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgKi8KIHN0 YXRpYyBpbmxpbmUgYm9vbAotY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNfY29tbW9uKEJpdG1h cHNldCAqKnZhbGlkX3N1YnBsYW5zLCBCaXRtYXBzZXQgKmFzeW5jcGxhbnMsIEJpdG1hcHNldCAq KnZhbGlkX2FzeW5jcGxhbnMpCitjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFuc19jb21tb24oQml0 bWFwc2V0ICoqdmFsaWRfc3VicGxhbnMsCisJCQkJCQkJCSAgQml0bWFwc2V0ICphc3luY3BsYW5z LAorCQkJCQkJCQkgIEJpdG1hcHNldCAqKnZhbGlkX2FzeW5jcGxhbnMpCiB7CiAJQXNzZXJ0KCp2 YWxpZF9hc3luY3BsYW5zID09IE5VTEwpOwogCg== --c76db600636f81f156e46d51d5ed0158382c047f16d5e7a69c2125e4a5b5--