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 1vOwDa-00DoWt-10 for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 11:00:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vOwDX-00Apzs-38 for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 11:00:48 +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 1vOwDX-00Apzd-1k for pgsql-hackers@lists.postgresql.org; Fri, 28 Nov 2025 11:00:47 +0000 Received: from mail-ua1-x92e.google.com ([2607:f8b0:4864:20::92e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vOwDV-001uxd-1C for pgsql-hackers@postgresql.org; Fri, 28 Nov 2025 11:00:46 +0000 Received: by mail-ua1-x92e.google.com with SMTP id a1e0cc1a2514c-93526e2842dso504526241.0 for ; Fri, 28 Nov 2025 03:00:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764327645; x=1764932445; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=YO3pBTxkqCXgP1wp/29csWkGd9MGx77+wL5RhtT3TUQ=; b=GwTBWQoOHzsPkj1raOhKZHUpdcg4QzYXgKBqieCMD/9vc6vwiKNbIpIYlmYPlQvw60 TMsxDYLN0x/kyxKeDwZCKG8N02aeYfmi/aLf0lWENMZdMEjacypy4859Q9gW7Dg5p6EV +FUWxaknx1yWUEs8Tgx/mz7AcapVLGdW1TN7PtQKRY9K2DVlX9ssyddiYNBSYZyxBnPv RSq7Pxt1f6zYQ6pfhrwlISpJtiHzNOM1XsPa8+npfYvxs2MdKGIDMG3hBlrBzS/w255u NXPb+SZ+75PSIPbwU6wJerAUs48tAgd0f8SNFh31YdGhhDvHmbhnQxZYxA64A1TeUJxn ZjDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764327645; x=1764932445; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YO3pBTxkqCXgP1wp/29csWkGd9MGx77+wL5RhtT3TUQ=; b=LhcniDoXNr6p7XuFXIxVCGwG9iZFL1z5A7CA4Yde/Q2oAvtfWwkXl0g9FMwEfoxCdx 2oE0SE+NRe7ihjSR8vGxLk8QosjiywsP3mMLExLcQKmKbhxn4k3wSVFLN2FYaXzOFm7I A/YGvnZBK4C3wNmn0Z2aa2/HOWE5Hsw66t5rbZ9x6SaOUBXZH02RNeaMgnKjujBH3NI1 bWr7dKkryQ6/PmlVhNqhQRLO7mQLKbwr804uxomPIRGUyrDxO3R+UFxtVzp/HdGtn90h sCXcXD87gryj4LY9D4o+lk1hIEsZaj8DxtYr1HwJuwOrPPYP534T5tgTtC0n4pxOh231 MxgQ== X-Gm-Message-State: AOJu0YwqWHWDRib9JA6N9iEgQBepQsmBqTNGEjPX9P2ewElXwb4UQ5Rp cBKBdvkdeWd1CA06SdOZzuT6zlfe638rKfnn6VhnHyIVy3j+1FPXom3uLG5HwLVzFDSIKz2VWSz q5akqnCLL+TKNuytcjo6oAfsGMwIq2q8mYHUtahqrZQ== X-Gm-Gg: ASbGncuwyoBaNnQRjY/8BkX3D3r7q842/PyxGug7Hryw33aeY/FWMkhYtth/YRkEdMx W1xzEBO9gIhTUofGY1/Q48nnvSLS0BUrB1kLAEjypsa522YOahWsjGWM8JCKHzwWUW5jb9QCfNO Ch+hBouLZm9jGs6jUt1B3Gi7cewNPCTKYxE1hz70MffIrkOD5tWp1eGtds5Mg3tvQ+1kxQtK3VH 8haeBmawI0MXLf4wYPurIkVj+rJF1nHUhThDDz2ShDs4gmEnSYPNmx8EsBRb34+E1j0m3P7Q7JJ +DzVabXSWiJCmSd+yTzP3qTrwFjwHPj1Z3+QNEY6PDZgJi/rnjbkMFcyLSrrXR7a+CwBURoAuTe eShOEGxwJM6C3X9KtbZwIcMOv4+d88YNfJ2FPqATgp1zxrh8mwo4itTxaCV6BDwSmtyC7WkaPiN toMZNfs/w= X-Google-Smtp-Source: AGHT+IGfl28en2NzEXUmJryr6t55MG+7p7syXpLlMw2qufyaZ06CVTDkqYS/OuIG+Z7ZoKDPG3ilk7oaS0xkHbTTaIk= X-Received: by 2002:a05:6102:c03:b0:5dd:a616:69fc with SMTP id ada2fe7eead31-5e1de13b862mr8139129137.9.1764327644814; Fri, 28 Nov 2025 03:00:44 -0800 (PST) MIME-Version: 1.0 From: jian he Date: Fri, 28 Nov 2025 19:00:08 +0800 X-Gm-Features: AWmQ_bnL4Jf3vKYOeG7Aq8Pn1ED0x13E17ZOrTVtcZhjPGAIdPQlHqLb8ivaIWY Message-ID: Subject: refactor ExecInitPartitionInfo To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000008978130644a58a74" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008978130644a58a74 Content-Type: text/plain; charset="UTF-8" hi. I noticed the following code pattern repeated several times in ExecInitPartitionInfo. ``` if (part_attmap == NULL) build_attrmap_by_name(RelationGetDescr(partrel), RelationGetDescr(firstResultRel), false); ``` we can consolidated into one, like: + if (node != NULL && + (list_length(node->withCheckOptionLists) > 0 || + list_length(node->returningLists) > 0 || + node->onConflictAction != ONCONFLICT_NONE || + node->operation == CMD_MERGE)) + { + part_attmap = + build_attrmap_by_name(RelationGetDescr(partrel), + RelationGetDescr(firstResultRel), + false); + } + it matters, because nearby patch ON CONFLICT DO SELECT is= going to add another one. what do you think? -- jian https://www.enterprisedb.com/ --0000000000008978130644a58a74 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-refactor-ExecInitPartitionInfo.patch" Content-Disposition: attachment; filename="v1-0001-refactor-ExecInitPartitionInfo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miiqvky00 RnJvbSAzMmM5MzIzYjY4ZmQ2YWJiNDVkYzBlZGVjMGE2NWE3ZGQwNzZjZWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjggTm92IDIwMjUgMTg6NTA6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gcmVmYWN0b3IgRXhlY0luaXRQYXJ0aXRpb25JbmZvCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLwotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyB8 IDM2ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNl cnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKaW5kZXggMGRjY2UxODFmMDkuLmY4NTVkMmMyMzVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5jCkBAIC01NDYsNiArNTQ2LDE4IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCShub2RlICE9 IE5VTEwgJiYKIAkJCQkJCSBub2RlLT5vbkNvbmZsaWN0QWN0aW9uICE9IE9OQ09ORkxJQ1RfTk9O RSkpOwogCisJaWYgKG5vZGUgIT0gTlVMTCAmJgorCQkobGlzdF9sZW5ndGgobm9kZS0+d2l0aENo ZWNrT3B0aW9uTGlzdHMpID4gMCB8fAorCQkgbGlzdF9sZW5ndGgobm9kZS0+cmV0dXJuaW5nTGlz dHMpID4gMCB8fAorCQkgbm9kZS0+b25Db25mbGljdEFjdGlvbiAhPSBPTkNPTkZMSUNUX05PTkUg fHwKKwkJIG5vZGUtPm9wZXJhdGlvbiA9PSBDTURfTUVSR0UpKQorCXsKKwkJcGFydF9hdHRtYXAg PQorCQkJYnVpbGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IocGFydHJlbCksCisJ CQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihmaXJzdFJlc3VsdFJlbCksCisJCQkJCQkJCSAgZmFs c2UpOworCX0KKwogCS8qCiAJICogQnVpbGQgV0lUSCBDSEVDSyBPUFRJT04gY29uc3RyYWludHMg Zm9yIHRoZSBwYXJ0aXRpb24uICBOb3RlIHRoYXQgd2UKIAkgKiBkaWRuJ3QgYnVpbGQgdGhlIHdp dGhDaGVja09wdGlvbkxpc3QgZm9yIHBhcnRpdGlvbnMgd2l0aGluIHRoZSBwbGFubmVyLApAQCAt NTg4LDEwICs2MDAsNiBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAq bXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCS8qCiAJCSAqIENvbnZlcnQgVmFycyBpbiBpdCB0 byBjb250YWluIHRoaXMgcGFydGl0aW9uJ3MgYXR0cmlidXRlIG51bWJlcnMuCiAJCSAqLwotCQlw YXJ0X2F0dG1hcCA9Ci0JCQlidWlsZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihw YXJ0cmVsKSwKLQkJCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKGZpcnN0UmVzdWx0UmVsKSwKLQkJ CQkJCQkJICBmYWxzZSk7CiAJCXdjb0xpc3QgPSAoTGlzdCAqKQogCQkJbWFwX3ZhcmlhYmxlX2F0 dG5vcygoTm9kZSAqKSB3Y29MaXN0LAogCQkJCQkJCQlmaXJzdFZhcm5vLCAwLApAQCAtNjQ1LDE0 ICs2NTMsNiBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJCSAqLwogCQlyZXR1cm5pbmdMaXN0ID0gbGluaXRpYWwobm9k ZS0+cmV0dXJuaW5nTGlzdHMpOwogCi0JCS8qCi0JCSAqIENvbnZlcnQgVmFycyBpbiBpdCB0byBj b250YWluIHRoaXMgcGFydGl0aW9uJ3MgYXR0cmlidXRlIG51bWJlcnMuCi0JCSAqLwotCQlpZiAo cGFydF9hdHRtYXAgPT0gTlVMTCkKLQkJCXBhcnRfYXR0bWFwID0KLQkJCQlidWlsZF9hdHRybWFw X2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihwYXJ0cmVsKSwKLQkJCQkJCQkJCSAgUmVsYXRpb25H ZXREZXNjcihmaXJzdFJlc3VsdFJlbCksCi0JCQkJCQkJCQkgIGZhbHNlKTsKIAkJcmV0dXJuaW5n TGlzdCA9IChMaXN0ICopCiAJCQltYXBfdmFyaWFibGVfYXR0bm9zKChOb2RlICopIHJldHVybmlu Z0xpc3QsCiAJCQkJCQkJCWZpcnN0VmFybm8sIDAsCkBAIC03OTEsMTEgKzc5MSw3IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJCQkgKiB0YXJnZXQgcmVsYXRpb24gKGZpcnN0VmFybm8pLgogCQkJCSAqLwogCQkJCW9u Y29uZmxzZXQgPSBjb3B5T2JqZWN0KG5vZGUtPm9uQ29uZmxpY3RTZXQpOwotCQkJCWlmIChwYXJ0 X2F0dG1hcCA9PSBOVUxMKQotCQkJCQlwYXJ0X2F0dG1hcCA9Ci0JCQkJCQlidWlsZF9hdHRybWFw X2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihwYXJ0cmVsKSwKLQkJCQkJCQkJCQkJICBSZWxhdGlv bkdldERlc2NyKGZpcnN0UmVzdWx0UmVsKSwKLQkJCQkJCQkJCQkJICBmYWxzZSk7CisKIAkJCQlv bmNvbmZsc2V0ID0gKExpc3QgKikKIAkJCQkJbWFwX3ZhcmlhYmxlX2F0dG5vcygoTm9kZSAqKSBv bmNvbmZsc2V0LAogCQkJCQkJCQkJCUlOTkVSX1ZBUiwgMCwKQEAgLTg5MSwxMiArODg3LDYgQEAg RXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCQlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29u dGV4dDsKIAkJTm9kZQkgICAqam9pbkNvbmRpdGlvbjsKIAotCQlpZiAocGFydF9hdHRtYXAgPT0g TlVMTCkKLQkJCXBhcnRfYXR0bWFwID0KLQkJCQlidWlsZF9hdHRybWFwX2J5X25hbWUoUmVsYXRp b25HZXREZXNjcihwYXJ0cmVsKSwKLQkJCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihmaXJzdFJl c3VsdFJlbCksCi0JCQkJCQkJCQkgIGZhbHNlKTsKLQogCQlpZiAodW5saWtlbHkoIWxlYWZfcGFy dF9ycmktPnJpX3Byb2plY3ROZXdJbmZvVmFsaWQpKQogCQkJRXhlY0luaXRNZXJnZVR1cGxlU2xv dHMobXRzdGF0ZSwgbGVhZl9wYXJ0X3JyaSk7CiAKLS0gCjIuMzQuMQoK --0000000000008978130644a58a74--