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 1vtoav-00FUKW-0x for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Feb 2026 15:08:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vtoau-00A9cu-0J for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Feb 2026 15:08:32 +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 1vtoat-00A9cm-2E for pgsql-hackers@lists.postgresql.org; Sat, 21 Feb 2026 15:08:31 +0000 Received: from mail-ua1-x936.google.com ([2607:f8b0:4864:20::936]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vtoaq-00000000WkM-0rA9 for pgsql-hackers@postgresql.org; Sat, 21 Feb 2026 15:08:30 +0000 Received: by mail-ua1-x936.google.com with SMTP id a1e0cc1a2514c-948aec218a2so856111241.0 for ; Sat, 21 Feb 2026 07:08:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771686508; cv=none; d=google.com; s=arc-20240605; b=ak7doxHnoFFeDqbfV8ldYBYBIWRAH92aaFxnxnx7Hwwus/pI4CEi6cfAghzSWgoT0g gMcq8/ujctEiGZmDpgFT7h2TKZTsAIWrw3uPimEgQxeBW1UaHEe7S3U5fObeIdi/VXgD iQNn8gIkgEu0z9JU+44PV14mVsYT4dy4PkMnHpsODPUjFbkhuojjr4p/tjcVhTOer2iW r+pOp7xUiV/PjdQRyiWkILj9dJAlMdCDUCRk57Ycsczwn7KXP/ih3cN07NbxPzD7CHVU FyZTZRfogjRf9t9UWkNEFaLPOvCw+HQwA5ZL5jA55taEzk1rh2zWh9Tz+mWb03jw5PAU S3vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=R9KeAp2sYocl9NnqtscKjddKmX0n7fuOElNDx09FrfY=; fh=FIa6CnAOcDlblDMIqVQXhn30ONA1aoHzZ0tfczHgg8I=; b=g3tmNrv8qBI8YkkjRuznuDllr1BgDu5BjJzbkJ9+mPHXLsxQO54hSGBSNTBWXwBhlz drQmtFZkVcPtBf/+6I1oCpHPFI9txqQUVEdyvTS/6KrE30F0h71cMEsf8DxOrA5xOYh0 VrTmqkfvRAPgKmo+VgIPPv/EB7hK3lph1LTrSXePdrblaC8Tzwwlptlbj4MNpABxlq8F 4jyPAuQ+WRVwqdoiTGaNbQDCvL1QLA/yO2sr258vLDsXbqoL+FBaAaZRztSdMdf8Qtor JR4IyK9XC0WpQGF9w5cGKJ2cnBe86c0fMwXoImBK16bDngh28VZm/UpDLZR/0Gt6jYLr YxvA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771686508; x=1772291308; darn=postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=R9KeAp2sYocl9NnqtscKjddKmX0n7fuOElNDx09FrfY=; b=Q80XLtR5SwzQMp0zqzusAy5ZMGe0/UFmnJ/XJFx823gn3se0zZ0g/O+djCsQGh0jgH jiN6115zpLF4srP9Xjcf6PAUnRGsAKERiVIN6+kFTh2/Yle0bQviNDv3ldexWCBvy75v L3pmhb3vpWGXhlA8GRNsbbVsxsB4j5443ZVkBDI2nVrk9HXF1VobA++N9xy/Fd3pkBor ZCWH+JwhQjWyLeoiClnTcCE9nMWlz2EfFbwyHdzRbZSDNHoWa+X31wF5BDd66YnOF9Uc fQkBYKvV/qSSfmOb4CHKwdbE4pl/v+rQoAUgond4eGVV46DzLa814brmcfZsVbybcoEn g2pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771686508; x=1772291308; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=R9KeAp2sYocl9NnqtscKjddKmX0n7fuOElNDx09FrfY=; b=gTTb2dUihQoJSzhMxk1uZS3swrl2lJuu53sGXrzJQ+1v56V/oPPRQ5chgQuUr1wz0J KLCc2anUMQghgBNNeIJkAhnlVs3/jT+YybPfICbJuz8EA2/nWRZXJje5bvFnLRHzS5Zk 9CM5TAhddc+WjTMdKEPnaz/mJpeqDPnZTBEihROp+uuvyqstwyEalBGXB7XEmmj3+cto 6zFuYkYKb+iO7bfcHvgib20be0sjzFu/8CMqI0SrI3kl5lzpPwR2vjDbjBQiMhUddJzl e4lxt8ijQePBT1sWULcNVZG9Ma2w4C/ya9zHrl1M20BGbGUBkmvG5e1w2FhgijaizpJT gRWg== X-Gm-Message-State: AOJu0YzgI+MWknLz3T9s6zO2241FgNKH+AucFMdRA0N78Q5YWzH6IzOT CvoJZw8NJ67InF5k8BUCmWANJ1z+HEOCSytC0VV51RUhm2MooJIFQddH62UNRXC7t6SA6s+or7g w/HfXFGLKItgIYdmYJa5XjAnpE93c0tCXVNZcYy5RBA== X-Gm-Gg: AZuq6aIim4kyh79roUaQLBe/RgP9D5E/Rq/bAtEfoHPChFJqfoE1/WxlvboTg3DZfsY CBrqgpPXmtTcCLLKF8Wn2iKmd/YWkOOVk4Brqtp/x9EmK6Fpdv7+3KgDMgGQk/jvzRR+d5yQjQu GqUVD66e16xcOItDHZ3vx3p7ZTGPRkoaSe3mVgzehwUS0l+daOehQFjzrFh6uEaOGQ9QkhlYENv yVdYwPqqDBUop6ie6hAsBa9LNN4JbO8QPRrZvlGoBmhDn8NrcngsBouYFzmItg/Jz21cAjccVk3 4Zl7OA3Xv7XToJm/upXjxBtepoQdcifeGw/XR6ukqPcs7BtPXb4Q6TCyUfhDQKWAk9XOgpNrEVB U0V2BXhejbsc0DyraFIYUOtWvNULvnr+x+htTjwbZpG1qR1HAJ2ucDaEA9unXVW8dLSUi2C6Fjt GyEUQ9ylH2sJLQMDCT54iw7Q== X-Received: by 2002:a05:6102:161f:b0:5ee:a8c4:18f2 with SMTP id ada2fe7eead31-5feb3028425mr1213576137.26.1771686508353; Sat, 21 Feb 2026 07:08:28 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Sat, 21 Feb 2026 23:07:52 +0800 X-Gm-Features: AaiRm537b1smq_XxzZeTXg96Edk3DdeO20Axv4v83oqreU5iQDg9XDJ-Vl4i4dU Message-ID: Subject: Re: refactor ExecInitPartitionInfo To: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000fbf890064b56e8b4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fbf890064b56e8b4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 28, 2025 at 7:00=E2=80=AFPM jian he wrote: > > hi. > > I noticed the following code pattern repeated several times in > ExecInitPartitionInfo. > ``` > if (part_attmap =3D=3D NULL) > build_attrmap_by_name(RelationGetDescr(partrel), > RelationGetDescr(firstResultRel), > false); > ``` > > we can consolidated into one, like: > > + if (node !=3D NULL && > + (list_length(node->withCheckOptionLists) > 0 || > + list_length(node->returningLists) > 0 || > + node->onConflictAction !=3D ONCONFLICT_NONE || > + node->operation =3D=3D CMD_MERGE)) > + { > + part_attmap =3D > + build_attrmap_by_name(RelationGetDescr(partrel), > + RelationGetDescr(firstResultRel), > + false); > + } > + > > + if (node !=3D NULL && > + (list_length(node->withCheckOptionLists) > 0 || > + list_length(node->returningLists) > 0 || > + node->onConflictAction !=3D ONCONFLICT_NONE || > + node->operation =3D=3D CMD_MERGE)) V1 is way too complicated. IMHO, we can just do if (node !=3D NULL) part_attmap =3D build_attrmap_by_name(RelationGetDescr(partrel), RelationGetDescr(firstResultRel= ), false); We have now consolidated five uses of build_attrmap_by_name into one. -- jian https://www.enterprisedb.com/ --000000000000fbf890064b56e8b4 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-refactor-ExecInitPartitionInfo.patch" Content-Disposition: attachment; filename="v2-0001-refactor-ExecInitPartitionInfo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlwg09k90 RnJvbSAzYjdlYjI4NDI0MTY3NWExMDI2ZWVlYmM5YTZmNjgyYTg4Zjk1NDMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjEgRmViIDIwMjYgMjI6NTA6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gcmVmYWN0b3IgRXhlY0luaXRQYXJ0aXRpb25JbmZvCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0NBQ0p1ZnhFTl9tbWdUdHAtcmFKOS1WSkhneUFHbWIwU3JPKzAxa241Ynk0 bUpfWE9md0BtYWlsLmdtYWlsLmNvbQpjb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9z dGdyZXNxbC5vcmcvcGF0Y2gvNjI4MAotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyB8IDM1ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA2IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYwppbmRleCBiYWIyOTRmNWU5MS4uZDYyZDZhNzFmMDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTYwNyw2ICs2MDcsMTEgQEAgRXhlY0luaXRQYXJ0aXRp b25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJ KG5vZGUgIT0gTlVMTCAmJgogCQkJCQkJIG5vZGUtPm9uQ29uZmxpY3RBY3Rpb24gIT0gT05DT05G TElDVF9OT05FKSk7CiAKKwlpZiAobm9kZSAhPSBOVUxMKQorCQlwYXJ0X2F0dG1hcCA9IGJ1aWxk X2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKHBhcnRyZWwpLAorCQkJCQkJCQkJCQlS ZWxhdGlvbkdldERlc2NyKGZpcnN0UmVzdWx0UmVsKSwKKwkJCQkJCQkJCQkJZmFsc2UpOworCiAJ LyoKIAkgKiBCdWlsZCBXSVRIIENIRUNLIE9QVElPTiBjb25zdHJhaW50cyBmb3IgdGhlIHBhcnRp dGlvbi4gIE5vdGUgdGhhdCB3ZQogCSAqIGRpZG4ndCBidWlsZCB0aGUgd2l0aENoZWNrT3B0aW9u TGlzdCBmb3IgcGFydGl0aW9ucyB3aXRoaW4gdGhlIHBsYW5uZXIsCkBAIC02NDksMTAgKzY1NCw2 IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3Rh dGUgKmVzdGF0ZSwKIAkJLyoKIAkJICogQ29udmVydCBWYXJzIGluIGl0IHRvIGNvbnRhaW4gdGhp cyBwYXJ0aXRpb24ncyBhdHRyaWJ1dGUgbnVtYmVycy4KIAkJICovCi0JCXBhcnRfYXR0bWFwID0K LQkJCWJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKHBhcnRyZWwpLAotCQkJ CQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IoZmlyc3RSZXN1bHRSZWwpLAotCQkJCQkJCQkgIGZhbHNl KTsKIAkJd2NvTGlzdCA9IChMaXN0ICopCiAJCQltYXBfdmFyaWFibGVfYXR0bm9zKChOb2RlICop IHdjb0xpc3QsCiAJCQkJCQkJCWZpcnN0VmFybm8sIDAsCkBAIC03MDYsMTQgKzcwNyw2IEBAIEV4 ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAkJICovCiAJCXJldHVybmluZ0xpc3QgPSBsaW5pdGlhbChub2RlLT5yZXR1cm5pbmdM aXN0cyk7CiAKLQkJLyoKLQkJICogQ29udmVydCBWYXJzIGluIGl0IHRvIGNvbnRhaW4gdGhpcyBw YXJ0aXRpb24ncyBhdHRyaWJ1dGUgbnVtYmVycy4KLQkJICovCi0JCWlmIChwYXJ0X2F0dG1hcCA9 PSBOVUxMKQotCQkJcGFydF9hdHRtYXAgPQotCQkJCWJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxh dGlvbkdldERlc2NyKHBhcnRyZWwpLAotCQkJCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKGZpcnN0 UmVzdWx0UmVsKSwKLQkJCQkJCQkJCSAgZmFsc2UpOwogCQlyZXR1cm5pbmdMaXN0ID0gKExpc3Qg KikKIAkJCW1hcF92YXJpYWJsZV9hdHRub3MoKE5vZGUgKikgcmV0dXJuaW5nTGlzdCwKIAkJCQkJ CQkJZmlyc3RWYXJubywgMCwKQEAgLTk1MSwxMSArOTQ0LDcgQEAgRXhlY0luaXRQYXJ0aXRpb25J bmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQlMaXN0 CSAgICpvbmNvbmZsY29sczsKIAogCQkJCQlvbmNvbmZsc2V0ID0gY29weU9iamVjdChub2RlLT5v bkNvbmZsaWN0U2V0KTsKLQkJCQkJaWYgKHBhcnRfYXR0bWFwID09IE5VTEwpCi0JCQkJCQlwYXJ0 X2F0dG1hcCA9Ci0JCQkJCQkJYnVpbGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3Io cGFydHJlbCksCi0JCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IoZmlyc3RSZXN1bHRSZWwp LAotCQkJCQkJCQkJCQkJICBmYWxzZSk7CisKIAkJCQkJb25jb25mbHNldCA9IChMaXN0ICopCiAJ CQkJCQltYXBfdmFyaWFibGVfYXR0bm9zKChOb2RlICopIG9uY29uZmxzZXQsCiAJCQkJCQkJCQkJ CUlOTkVSX1ZBUiwgMCwKQEAgLTEwMDcsMTIgKzk5Niw2IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5m byhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQl7CiAJCQkJ CUxpc3QJICAgKmNsYXVzZTsKIAotCQkJCQlpZiAocGFydF9hdHRtYXAgPT0gTlVMTCkKLQkJCQkJ CXBhcnRfYXR0bWFwID0KLQkJCQkJCQlidWlsZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXRE ZXNjcihwYXJ0cmVsKSwKLQkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihmaXJzdFJlc3Vs dFJlbCksCi0JCQkJCQkJCQkJCQkgIGZhbHNlKTsKLQogCQkJCQljbGF1c2UgPSBjb3B5T2JqZWN0 KChMaXN0ICopIG5vZGUtPm9uQ29uZmxpY3RXaGVyZSk7CiAJCQkJCWNsYXVzZSA9IChMaXN0ICop CiAJCQkJCQltYXBfdmFyaWFibGVfYXR0bm9zKChOb2RlICopIGNsYXVzZSwKQEAgLTEwNjQsMTIg KzEwNDcsNiBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJCUV4cHJDb250ZXh0ICplY29udGV4dCA9IG10c3RhdGUtPnBz LnBzX0V4cHJDb250ZXh0OwogCQlOb2RlCSAgICpqb2luQ29uZGl0aW9uOwogCi0JCWlmIChwYXJ0 X2F0dG1hcCA9PSBOVUxMKQotCQkJcGFydF9hdHRtYXAgPQotCQkJCWJ1aWxkX2F0dHJtYXBfYnlf bmFtZShSZWxhdGlvbkdldERlc2NyKHBhcnRyZWwpLAotCQkJCQkJCQkJICBSZWxhdGlvbkdldERl c2NyKGZpcnN0UmVzdWx0UmVsKSwKLQkJCQkJCQkJCSAgZmFsc2UpOwotCiAJCWlmICh1bmxpa2Vs eSghbGVhZl9wYXJ0X3JyaS0+cmlfcHJvamVjdE5ld0luZm9WYWxpZCkpCiAJCQlFeGVjSW5pdE1l cmdlVHVwbGVTbG90cyhtdHN0YXRlLCBsZWFmX3BhcnRfcnJpKTsKIAotLSAKMi4zNC4xCgo= --000000000000fbf890064b56e8b4--