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 1vOyAm-00FMo7-1T for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 13:06:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vOyAk-00BKCb-2I for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 13:06:03 +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 1vOyAk-00BKCT-0u for pgsql-hackers@lists.postgresql.org; Fri, 28 Nov 2025 13:06:02 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vOyAh-001wbF-2l for pgsql-hackers@lists.postgresql.org; Fri, 28 Nov 2025 13:06:01 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-42b31c610fcso1617558f8f.0 for ; Fri, 28 Nov 2025 05:06:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764335158; x=1764939958; 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=JF2LE+gqzTwz6cAFK0uZFfCli2cpdywyld6QK98ZgXs=; b=J57nmFaY08b7FMy9pND7PbZUnJMckkTHf0w4uyM6nAWMcY8XP0fXTsrlN9oRJlFCnJ WYml3nj8mOR2du3xTrnfUm4R6RA/qpYrNiqB8J8YPl0dutQfYybtXoNQJNc1nwFYX0XL 4RFvXivjGqfmWvAnty/MnDqjqUhxov/ZiF1e5wtiqgjbJCAxPLk1iF6escxpKaIkmnwF hsnYqe4oKUcANC3NUrfb4FGpKjE7B/Wa7g6XWSnKn/Fen0JfN/4gVqPkjsSaTuzLo9qY S0SaKVl7XSsvmjPZDFL3otV2UkJMU9BcASWPQV1BfDVocaF7KeUQlA9glNRAcCN3hHyi 7fSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764335158; x=1764939958; 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=JF2LE+gqzTwz6cAFK0uZFfCli2cpdywyld6QK98ZgXs=; b=NJj8+HatQFvBZBhIRdESl0o1bTBfaEJep4WISwlMU81ZBetsNwmIPDkuwRVqMwrdTP zp8STzo/o7X8avOCNJMWpXPUrrnSoA2RnozHLRphCIClgEtJMAL9ZnEQNExZaN7vFUkc DV3SZ6p8t8Ts2hAMNbEJ5dQxRZIs0qiH7w8Fyg4jOiUUGPy9MzWwZenXIRs9PZo4owkl wbeOyUxK+vPsDSUN3xj8+3+3Cw3ztW/87W34Gd6EZ9zlpInVVEnWDVe2Yn5NqXhWerX6 ssO8HK7JZiKeCtJEvc5LQhsL53yubi+t1hTzVEiLJzJXQsob0+SpHR32hrKRbZpLJd+e cT+g== X-Forwarded-Encrypted: i=1; AJvYcCUnea9BYB8q5tSYEHb3Kxu6DgfJJRWyggOwL2F+yA59WKyuZg5+uLJ/TlSVyD0uxf45pxtyJ9B+e6objAVq@lists.postgresql.org X-Gm-Message-State: AOJu0Yx0mtoI/BGoDmMpXvB8lMbV6jXR3bIKqjG2wWKy8a/Hkqeae2IG /mUzXWhlWlm+4EwRJ1USxwEJCUqqqlmZElbgneSM2Kid2o6VZL1xXG3WT8k5OKX633/42YEejUz 4Qf1rh667RbodydMtVrWTXJIn2EyF70c= X-Gm-Gg: ASbGncsTXocd/vZGUWthD3oFA9GQ0jTLNFVFIRjIhDNtNH5d6Wxae1JGC2MoRaWZmn0 7dCUJN214H8PjQ/3WRl9mjIiwfW+AQjzEwnvhTg795xMG1m/950oNm6Ay23rHYw0z6oropVm42c +JSyQWVfCBVQ0SpWhkriWl63g2n0RaLTEdId4eauAC+9i7pEJZKUWdK/vbVe2IgHW7M1dvk65TA IuZSjm4Jd9liHRw0cWzcMLokM7+eAYMZov/m+AYuaZfDM2x9XJU3M/7F2Vb9UXDfQp5IWb2 X-Google-Smtp-Source: AGHT+IF5TSIFJgjDA4FfduWEb98mCNoTutyWYszndLmKqgGHvwF5wDRaRQvyc5HqyvJIddVMOfqXHZo6lgQLLtyKgpE= X-Received: by 2002:a05:6000:1841:b0:429:b525:6df5 with SMTP id ffacd0b85a97d-42e0f1fc3f8mr16598851f8f.3.1764335157849; Fri, 28 Nov 2025 05:05:57 -0800 (PST) MIME-Version: 1.0 References: <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> <2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi> <36531c0e-292c-409d-bbc7-a252cf6e910a@iki.fi> <54aa8f65-f0e4-4464-b543-e0399c1cab1e@iki.fi> <4a9dda70-0af7-41a4-9636-b168f2fc48ef@iki.fi> <46cc45e9-fddd-44bc-bcb3-96889aafd921@iki.fi> <6c298bc4-7029-4c1d-bf16-3e094842ce32@iki.fi> In-Reply-To: <6c298bc4-7029-4c1d-bf16-3e094842ce32@iki.fi> From: Ashutosh Bapat Date: Fri, 28 Nov 2025 18:35:44 +0530 X-Gm-Features: AWmQ_bmsStdidNNZtKlXwLtGfgs71PzhhDyQ4tH5KPDg41vF0t5jXhiLAnqMcvY Message-ID: Subject: Re: POC: make mxidoff 64 bits To: Heikki Linnakangas Cc: Maxim Orlov , Alvaro Herrera , Alexander Korotkov , wenhui qiu , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000593b5b0644a74a76" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000593b5b0644a74a76 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 21, 2025 at 7:26=E2=80=AFPM Heikki Linnakangas wrote: > > > > I have reviewed patch 0002 and multxact.c changes in 0003. So far I > > have only these comments. I will review the pg_upgrade.c changes next. 007_multixact_conversion.pl fires thousands of queries through BackgroundPsql which prints debug output for each of the queries. When running this file with oldinstall set, 2.2M regress_log_007_multixact_conversion (size of file) 77874 regress_log_007_multixact_conversion (wc -l output) Since this output is also copied in testlog.txt, the effect is two-fold. Most, if not all, of this output is useless. It also makes it hard to find the output we are looking for. PFA patch which reduces this output. The patch adds a flag verbose to query_safe() and query() to toggle this output. With the patch the sizes are 27K regress_log_007_multixact_conversion 588 regress_log_007_multixact_conversion And it makes the test faster by about a second or two on my laptop. Something on those lines or other is required to reduce the output from query_safe(). Some more comments +++ b/src/bin/pg_upgrade/multixact_old.c We may need to introduce new _new and then _old will become _older. Should we rename the files to have pre19 and post19 or some similar suffixes which make it clear what is meant by old and new? + +static inline int64 +MultiXactIdToOffsetPage(MultiXactId multi) The prologue mentions that the definitions are copy-pasted from multixact.c from version 18, but they share the names with functions in the current version. I think that's going to be a good source of confusion especially in a file which is a few hundred lines long. Can we rename them to have "Old" prefix or something similar? + +# Dump contents of the 'mxofftest' table, created by mxact_workload +sub get_dump_for_comparison This local function shares its name with a local function in 002_pg_upgrade.pl. Better to use a separate name. Also it's not "dumping" data using "pg_dump", so "dump" in the name can be misleading. + $newnode->start; + my $new_dump =3D get_dump_for_comparison($newnode, "newnode_${tag}_dump")= ; + $newnode->stop; There is no code which actually looks at the multixact offsets here to make sure that the conversion happened correctly. I guess the test relies on visibility checks for that. Anyway, we need a comment explaining why just comparing the contents of the table is enough to ensure correct conversion. Better if we can add an explicit test that the offsets were converted correctly. I don't have any idea of how to do that right now, though. Maybe use pg_get_multixact_members() somehow in the query to extract data out of the table? + + compare_files($old_dump, $new_dump, + 'dump outputs from original and restored regression databases match'); A shared test name too :); but there is not regression database here. + + note ">>> case #${tag}\n" + . " oldnode mxoff from ${start_mxoff} to ${finish_mxoff}\n" + . " newnode mxoff ${new_next_mxoff}\n"; Should we check that some condition holds between finish_mxoff and new_next_mxoff? I will continue reviewing it further. -- Best Wishes, Ashutosh Bapat --000000000000593b5b0644a74a76 Content-Type: application/octet-stream; name="reduce_testoutput.patch.nocibot" Content-Disposition: attachment; filename="reduce_testoutput.patch.nocibot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miim3how0 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lv bi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbApp bmRleCBmZThkYTlhZGVkMi4uMTQxMzNlYjNjN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBn cmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwKQEAgLTY4LDggKzY4LDggQEAgc3ViIG14 YWN0X3dvcmtsb2FkCiAJCSMgdmVyc2lvbnMuCiAJCW15ICRjb25uID0gJGJpbm5vZGUtPmJhY2tn cm91bmRfcHNxbCgnJywKIAkJCWNvbm5zdHIgPT4gJG5vZGUtPmNvbm5zdHIoJ3Bvc3RncmVzJykp OwotCQkkY29ubi0+cXVlcnlfc2FmZSgiU0VUIGVuYWJsZV9zZXFzY2FuPW9mZiIpOwotCQkkY29u bi0+cXVlcnlfc2FmZSgiQkVHSU4iKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIlNFVCBlbmFibGVf c2Vxc2Nhbj1vZmYiLCAwKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIiwgMCk7CiAKIAkJ cHVzaChAY29ubmVjdGlvbnMsICRjb25uKTsKIAl9CkBAIC0xMTAsNyArMTEwLDcgQEAgc3ViIG14 YWN0X3dvcmtsb2FkCiAJCQkgICkgYXMgeAogCQkJXTsKIAkJfQotCQkkY29ubi0+cXVlcnlfc2Fm ZSgkc3FsKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoJHNxbCwgMCk7CiAJfQogCiAJZm9yIG15ICRj b25uIChAY29ubmVjdGlvbnMpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9CYWNrZ3JvdW5kUHNxbC5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0Jh Y2tncm91bmRQc3FsLnBtCmluZGV4IDYwYmJkNWRkNDQ1Li45ZDYyYzdhMDBjMCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQmFja2dyb3VuZFBzcWwucG0KKysrIGIv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQmFja2dyb3VuZFBzcWwucG0KQEAgLTIyOCwy MCArMjI4LDI0IEBAIHN1YiByZWNvbm5lY3RfYW5kX2NsZWFyCiAKIEV4ZWN1dGVzIGEgcXVlcnkg aW4gdGhlIGN1cnJlbnQgc2Vzc2lvbiBhbmQgcmV0dXJucyB0aGUgb3V0cHV0IGluIHNjYWxhcgog Y29udGV4dCBhbmQgKG91dHB1dCwgZXJyb3IpIGluIGxpc3QgY29udGV4dCB3aGVyZSBlcnJvciBp cyAxIGluIGNhc2UgdGhlcmUKLXdhcyBvdXRwdXQgZ2VuZXJhdGVkIG9uIHN0ZGVyciB3aGVuIGV4 ZWN1dGluZyB0aGUgcXVlcnkuCit3YXMgb3V0cHV0IGdlbmVyYXRlZCBvbiBzdGRlcnIgd2hlbiBl eGVjdXRpbmcgdGhlIHF1ZXJ5LiBJZiBDPHZlcmJvc2U+IGlzCit0cnVlIChkZWZhdWx0KSB0aGUg cXVlcnkgYW5kIGl0cyByZXN1bHRzIGFyZSBwcmludGVkIHRvIHRoZSB0ZXN0IG91dHB1dC4KIAog PWN1dAogCiBzdWIgcXVlcnkKIHsKLQlteSAoJHNlbGYsICRxdWVyeSkgPSBAXzsKKwlteSAoJHNl bGYsICRxdWVyeSwgJHZlcmJvc2UpID0gQF87CiAJbXkgJHJldDsKIAlteSAkb3V0cHV0OwogCW15 ICRxdWVyeV9jbnQgPSAkc2VsZi0+e3F1ZXJ5X2NudH0rKzsKIAorCSMgU2V0ICR2ZXJib3NlIHRv IHRydWUgaWYgbm90IHBhc3NlZAorCSR2ZXJib3NlID0gMSB1bmxlc3MgZGVmaW5lZCgkdmVyYm9z ZSk7CisKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2 ZWwgKyAxOwogCi0Jbm90ZSAiaXNzdWluZyBxdWVyeSAkcXVlcnlfY250IHZpYSBiYWNrZ3JvdW5k IHBzcWw6ICRxdWVyeSI7CisJbm90ZSAiaXNzdWluZyBxdWVyeSAkcXVlcnlfY250IHZpYSBiYWNr Z3JvdW5kIHBzcWw6ICRxdWVyeSIgdW5sZXNzICEkdmVyYm9zZTsKIAogCSRzZWxmLT57dGltZW91 dH0tPnN0YXJ0KCkgaWYgKGRlZmluZWQoJHNlbGYtPntxdWVyeV90aW1lcl9yZXN0YXJ0fSkpOwog CkBAIC0yODAsNyArMjg0LDcgQEAgc3ViIHF1ZXJ5CiAJICBleHBsYWluIHsKIAkJc3Rkb3V0ID0+ ICRzZWxmLT57c3Rkb3V0fSwKIAkJc3RkZXJyID0+ICRzZWxmLT57c3RkZXJyfSwKLQkgIH07CisJ ICB9IHVubGVzcyAhJHZlcmJvc2U7CiAKIAkjIFJlbW92ZSBiYW5uZXIgZnJvbSBzdGRvdXQgYW5k IHN0ZGVyciwgb3VyIGNhbGxlciBkb2Vzbid0IGNhcmUuICBUaGUKIAkjIGZpcnN0IG5ld2xpbmUg aXMgb3B0aW9uYWwsIGFzIHRoZXJlIHdvdWxkIG5vdCBiZSBvbmUgaWYgY29uc3VtaW5nIGFuCkBA IC0zMDgsOSArMzEyLDkgQEAgUXVlcnkgZmFpbHVyZSBpcyBkZXRlcm1pbmVkIGJ5IGl0IHByb2R1 Y2luZyBvdXRwdXQgb24gc3RkZXJyLgogCiBzdWIgcXVlcnlfc2FmZQogewotCW15ICgkc2VsZiwg JHF1ZXJ5KSA9IEBfOworCW15ICgkc2VsZiwgJHF1ZXJ5LCAkdmVyYm9zZSkgPSBAXzsKIAotCW15 ICRyZXQgPSAkc2VsZi0+cXVlcnkoJHF1ZXJ5KTsKKwlteSAkcmV0ID0gJHNlbGYtPnF1ZXJ5KCRx dWVyeSwgJHZlcmJvc2UpOwogCiAJaWYgKCRzZWxmLT57c3RkZXJyfSBuZSAiIikKIAl7Cg== --000000000000593b5b0644a74a76--