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 1w2AxL-0003eF-06 for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 16:38:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2AxJ-00BKU2-06 for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 16:38:13 +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 1w2AxI-00BKTt-21 for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 16:38:13 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2AxF-000000002YC-3WQl for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 16:38:12 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b9793fa5371so249488466b.2 for ; Mon, 16 Mar 2026 09:38:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773679090; cv=none; d=google.com; s=arc-20240605; b=iyvV8lQBHqBwwn2ENqqdCzdt2poBZijpXFHhmr34Cq2XXtNUfNhK8SkrN20BqbRc2X rTL3GGpzs2YLuYGVsndEbLhZ691Irrs8CduREgBoEz+CepFStYHLJl9tBGC0BTrp+ADv 2Eh7wJTI7EPZ7OlrFwbDyU1Fk/++J7iIMat39fberVhNhSTW/Ll9HZldvYPNUBS5fAJW 1/KxJK88ItLOmryZKzBRp7S8bcKuSHu3JnXT0UGoYr3ZRStrlkIvAcr7WVmJb3mEl25u 6J9FFYYpP5aAC6ejZbBq2TQx+kKintn3E1lpikdcPYlGbpKk5olOnVoTXobJcYQNpY49 +VXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=m/LeNqeaOoz2lnc8kARfR+bBUpR0y+/iatNtHjc/aWY=; fh=XkLynFFr/OWaFELq2Q+mgMQCI2iqwO0XaiD5eMoDSQc=; b=FqOjgii0Qu3hrHFQImghmy7yCpZE91pV81u8iJHaeT5YpqMWvPRZjNCBjKe9UzucSU zQzpCPLxGAEDda4oHJLIVWD24/yE8BfZeowcTFzChkNK4btAEEi0QRVLLiVFnyGxwO7+ epk+XC4BPw2/s4iPAmcpcQBcUGn6Qni9XjmgrXA00UIAaId9ZX9B4s4lLnx+rUgO1rXb SU8iGQI282a3TRaJEK+vUcnJLvStPOXrKX0fulh55hpjuVGFI0WhOgqIuls5AwsOQRal zBhv7v9IzLuI4Ax+cqbwZ76kKGuGNFAjpmkWvWu3EODXRTcva3pzCeSQLxQQFiS14WNj 0ZVw==; darn=lists.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=1773679090; x=1774283890; 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=m/LeNqeaOoz2lnc8kARfR+bBUpR0y+/iatNtHjc/aWY=; b=VUQN6BtgAG9jW4CqWVeQJkiZSXMLAl7ahJuPxbYCf+AhWkjsVlOw0G7OYHEWq4IxCg pL+UVVSfgbjaIsWZ+ZPfZcls47FeQx1YgFMGHVsTtZaBMsZHG8kbZBglMPZ/YHXOv3rA LVQggLWrgYQQgyEVPdmQALa/Q+Ju61Vw9sGv8XFUOk3x4nXYeEusyIApk1wctpS2dk7l 0H8k2i2+NJwHuVPCf8zSKttFQIxWKI9rDrxADhQB2qPHZjlGkbS2LAQcilFmnYJUafg4 GCLLMJQ9ZSjOTZW7GnRwVKsAAVRIf1u3ISDt2VqNGA/3+Yn4LLD52pdvCu0VvxHpi6dx IzOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773679090; x=1774283890; h=cc: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=m/LeNqeaOoz2lnc8kARfR+bBUpR0y+/iatNtHjc/aWY=; b=JMf1cI2265kJGtYQcJEUEHQ0zNWkF9Hh+X49KQm9P8nIcxtk2KCBf8xB76UaAror/Z dKNEdc/BgjT9pihRvnKqbv4lwI5qQKTHCA+Ok04E/KJRcd/mKUWgw/+YmpEdswi0YpvM O2C1wym3BCaZd43RdC7moqLHM5OzCRX3Zdx/lbFufpyaQ2lU5vhZekyFCwJ6WFQAn5o0 /4jFqxHiUOM9ogWhVv8LR/DHBH2sofx5XDCLVzb8n52Sv9Ez+j9up9JcOnYND1elzxjr xYxJvNXcMU2rpRpsb53u89IjyHmyWEPYnMgUOtXw1mYUXSXQADDxw722JMAdG1Y0wy6A 4L/Q== X-Forwarded-Encrypted: i=1; AJvYcCXJvB2hGuK8xAEEh9db/qI0uQMeTwXnxmP+LVQM1cAeHo34mKpneKzz7fNq/G2zMJsmTIyMkvzvoaLjbTjV@lists.postgresql.org X-Gm-Message-State: AOJu0YzfKomEAuG1HK4H8Z1HgdnbXD0tXXLAdkxF2CkD2Pax+XC5sHaV 0xlUEJVQBosynmSonzqiHrxx59i7DlALxiSlX3NSmpcqtxTZ42jofA1XQIA12sElOziI0s11FGi nYJmsc6Y3GOvjiZ6RVAI09HCq/6OO+T4= X-Gm-Gg: ATEYQzyERzRhjNMpCNdZr04L+++ci3e24YODyVT8q8dJwv4fAxDIxmQ1lvU+3cah1/Y ZOg4es87/0XwyHJg9sQhhXVfKzF5Fy3Rn64Sni7st10cYjJ3gtq2/86tgFoo6LE3YXMoKbezUmQ Z2NuA2pii3Bf0Nfwe576fIv0AOlz8QUoojxkY8nNeWEzCamEtoer7F4nO3xeIdfYRgqZUW2Yy4q Njpka6HZbDUFnan0KbkG69Oa9ttDQHtoHumPt+r4m+/i88IR1WwhnDrr456/mmFXFypAmCLNGz1 05O50SB/aEAGYmg5khlBWVebVooxNFh86yytXDwOBEwLDvHY7qaiaDmYkYn4BQigFQJnPEuXKQ= = X-Received: by 2002:a17:907:e105:b0:b93:6b41:e394 with SMTP id a640c23a62f3a-b9764f7ecd6mr518461866b.3.1773679089525; Mon, 16 Mar 2026 09:38:09 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Junwang Zhao Date: Tue, 17 Mar 2026 00:37:56 +0800 X-Gm-Features: AaiRm53YmRByvmFVWHiO7u5xNJAN2ErvXXnsCAawy980XfolUqHpxFt9B1nifm8 Message-ID: Subject: Re: More speedups for tuple deformation To: David Rowley Cc: Tender Wang , Andres Freund , John Naylor , PostgreSQL Developers Content-Type: multipart/mixed; boundary="00000000000013e3c1064d26d8d3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000013e3c1064d26d8d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi David and Tender, On Mon, Mar 16, 2026 at 5:17=E2=80=AFPM David Rowley = wrote: > > On Mon, 16 Mar 2026 at 20:01, Tender Wang wrote: > > SELECT * FROM t2, t4 RIGHT OUTER JOIN t0 ON t4.c0 WHERE t4.c1 ORDER BY > > > server closed the connection unexpectedly > > Thanks. Looks like I didn't get the startAttr logic correct in > nocachegetattr(). Starting by using the attcacheoff of the first NULL > attribute isn't valid. It should be the attribute prior to that one. > > I'm just verifying some code locally now. > > David > > The following case is more simpler: drop table if exists ty; create table ty(c0 int not null, c1 double precision, c2 int4range); insert into ty values (1, 1.0, '[1469060470,1895771979)'); insert into ty values(2, null, '[-1973503943,635641598)'); select * from ty order by c2; In this case, firstNonCachedOffsetAttr is 2 and firstNullAttr is 1. If we start from 1, the cached offset becomes 8 due to double's alignby, and deforming int4range from offset 8 will lead to corrupted data. Therefore, as David said, we should start from the attribute prior to that one. PFA is a trivial fix, I think we should add the test but I haven't found a proper regress test file for it. --=20 Regards Junwang Zhao --00000000000013e3c1064d26d8d3 Content-Type: application/octet-stream; name="0001-Fix-startAttr-computation-for-nocache-attribute-fetc.patch" Content-Disposition: attachment; filename="0001-Fix-startAttr-computation-for-nocache-attribute-fetc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmteo4pc0 RnJvbSBkNGIzNmRhYTZkZGVmYWU0ZTM1NDg4ODZmMzM3ZDExY2UyODRlNjkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdW53YW5nIFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpEYXRl OiBUdWUsIDE3IE1hciAyMDI2IDAwOjI2OjQ5ICswODAwClN1YmplY3Q6IFtQQVRDSF0gRml4IHN0 YXJ0QXR0ciBjb21wdXRhdGlvbiBmb3Igbm9jYWNoZSBhdHRyaWJ1dGUgZmV0Y2gKCkFkanVzdCBu b2NhY2hlW2hlYXB8aW5kZXhdX2dldGF0dHIoKSB0byBiYXNlIHRoZSBzdGFydGluZyBhdHRjYWNo ZW9mZgpvbiB0aGUgYXR0cmlidXRlIGJlZm9yZSB0aGUgZmlyc3QgTlVMTCwgZW5zdXJpbmcgY2Fj aGVkIG9mZnNldHMgYXJlCnZhbGlkLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVh cHR1cGxlLmMgIHwgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9pbmRleHR1cGxlLmMg fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwppbmRleCAyNmYwYzNiYjJjNC4uMzFm NjRiMGEzMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxl LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwpAQCAtNTQxLDcg KzU0MSw3IEBAIG5vY2FjaGVnZXRhdHRyKEhlYXBUdXBsZSB0dXAsCiAJCSAqIFN0YXJ0IGF0IHRo ZSBoaWdoZXN0IGF0dGNhY2hlb2ZmIGF0dHJpYnV0ZSB3aXRoIG5vIE5VTExzIGluIHByaW9yCiAJ CSAqIGF0dHJpYnV0ZXMuCiAJCSAqLwotCQlzdGFydEF0dHIgPSBNaW4odHVwbGVEZXNjLT5maXJz dE5vbkNhY2hlZE9mZnNldEF0dHIgLSAxLCBmaXJzdE51bGxBdHRyKTsKKwkJc3RhcnRBdHRyID0g TWluKHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZzZXRBdHRyIC0gMSwgTWF4KDAsIGZpcnN0 TnVsbEF0dHIgLSAxKSk7CiAJCW9mZiA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywg c3RhcnRBdHRyKS0+YXR0Y2FjaGVvZmY7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vaW5kZXh0dXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9pbmRleHR1cGxlLmMKaW5kZXggNmJhMDk5MzJiYTYuLjdkMGNmOWIzYmE3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2luZGV4dHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2luZGV4dHVwbGUuYwpAQCAtMjY3LDcgKzI2Nyw3IEBAIG5vY2FjaGVf aW5kZXhfZ2V0YXR0cihJbmRleFR1cGxlIHR1cCwKIAkJICogU3RhcnQgYXQgdGhlIGhpZ2hlc3Qg YXR0Y2FjaGVvZmYgYXR0cmlidXRlIHdpdGggbm8gTlVMTHMgaW4gcHJpb3IKIAkJICogYXR0cmli dXRlcy4KIAkJICovCi0JCXN0YXJ0QXR0ciA9IE1pbih0dXBsZURlc2MtPmZpcnN0Tm9uQ2FjaGVk T2Zmc2V0QXR0ciAtIDEsIGZpcnN0TnVsbEF0dHIpOworCQlzdGFydEF0dHIgPSBNaW4odHVwbGVE ZXNjLT5maXJzdE5vbkNhY2hlZE9mZnNldEF0dHIgLSAxLCBNYXgoMCwgZmlyc3ROdWxsQXR0ciAt IDEpKTsKIAkJb2ZmID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBzdGFydEF0dHIp LT5hdHRjYWNoZW9mZjsKIAl9CiAJZWxzZQotLSAKMi40MS4wCgo= --00000000000013e3c1064d26d8d3--