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.94.2) (envelope-from ) id 1t5rIq-0093Na-Tb for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Oct 2024 18:50:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t5rIp-0023NU-58 for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Oct 2024 18:50:51 +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.94.2) (envelope-from ) id 1t5rIo-0023NH-Nx for pgsql-hackers@lists.postgresql.org; Tue, 29 Oct 2024 18:50:51 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t5rIl-003Urf-Ca for pgsql-hackers@postgresql.org; Tue, 29 Oct 2024 18:50:49 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id 6A26B138C10 for ; Tue, 29 Oct 2024 19:50:43 +0100 (CET) Received: from s980.loopia.se (unknown [172.22.191.5]) by s807.loopia.se (Postfix) with ESMTP id 56D9A139601 for ; Tue, 29 Oct 2024 19:50:43 +0100 (CET) Received: from s473.loopia.se (unknown [172.22.191.6]) by s980.loopia.se (Postfix) with ESMTP id 55C3E220156B for ; Tue, 29 Oct 2024 19:50:43 +0100 (CET) X-Virus-Scanned: amavisd-new at amavis.loopia.se X-Spam-Flag: NO X-Spam-Score: -1.2 X-Spam-Level: X-Spam-Status: No, score=-1.2 tagged_above=-999 required=6.2 tests=[ALL_TRUSTED=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1] autolearn=disabled Authentication-Results: s473.loopia.se (amavisd-new); dkim=pass (2048-bit key) header.d=proxel.se Received: from s899.loopia.se ([172.22.191.5]) by s473.loopia.se (s473.loopia.se [172.22.190.13]) (amavisd-new, port 10024) with LMTP id iuwE-yWyjcXA for ; Tue, 29 Oct 2024 19:50:43 +0100 (CET) X-Loopia-Auth: user X-Loopia-User: andreas@proxel.se X-Loopia-Originating-IP: 158.174.129.34 Received: from [192.168.0.189] (h-158-174-129-34.NA.cust.bahnhof.se [158.174.129.34]) (Authenticated sender: andreas@proxel.se) by s899.loopia.se (Postfix) with ESMTPSA id E09912C8BA56 for ; Tue, 29 Oct 2024 19:50:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxel.se; s=loopiadkim1707418970; t=1730227842; bh=jniMQ8CpoVe8JaZbcU5NvzJqiJsrqh+6g7gkdhXFR6w=; h=Date:From:Subject:To; b=BVvNLeqLcL2m4FXx7Meo0nPOJsLrlXFp4JFu7OnmAFT8tPF3a9XbPTj/eGmZE6Pmh SxnRNvmAJOycl6vPPLc7ht5NusH+mxZvq15OAbEUGHFihWfHbaJvtSXwbhQ+BQy5dJ gNCmSHij74E2apGIt/UXg+ctSWsr3zzHvKW2Y4NcyNgNDztAylV5W7be/Sy5s9KRaB IYdNrEy8H3tlnyxkXrZqGcrF7mi0TuL/s+6jz090arQqVyyqpfR9OEOnbJs/B8dmF4 tjWCVQ99PtQKrd+A3RpGZAQp+2JpPqfaVIOGgIuRwZ2svtux9oA5HlZFF3pO/MF7zx TDB/zxE60IiQg== Content-Type: multipart/mixed; boundary="------------VFW1MEAj20nQLB1F9tCfoNlF" Message-ID: Date: Tue, 29 Oct 2024 19:50:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andreas Karlsson Subject: Always have pg_dump write rules in a consistent order To: pgsql-hackers Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------VFW1MEAj20nQLB1F9tCfoNlF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, When working on a new feature for PostgreSQL I noticed that the pg_upgrade tests became flaky due to rules being dumped in a different order between the original cluster and the upgraded cluster. (For context: my regress scripts left a bunch of views with dependency circles which I had forgot to clean up.) So I propose that we sort rules on (schema, name, relation_name) instead of (schema, name, oid) like it currently does. The patch itself is small enough and makes it easier to test that we upgrade rules and views correctly with pg_upgrade. Andreas --------------VFW1MEAj20nQLB1F9tCfoNlF Content-Type: text/x-patch; charset=UTF-8; name="0001-Make-pg_dump-always-write-rules-in-a-stable-order.patch" Content-Disposition: attachment; filename*0="0001-Make-pg_dump-always-write-rules-in-a-stable-order.patch" Content-Transfer-Encoding: base64 RnJvbSAxOGIzOWYwZTc5MzA2MDgyNDgxYzdlZTMwNGRlNTc4ZjViMzJhNmI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIEthcmxzc29uIDxhbmRyZWFzQHByb3hl bC5zZT4KRGF0ZTogVHVlLCAyOSBPY3QgMjAyNCAxNDo1OTowNCArMDEwMApTdWJqZWN0OiBb UEFUQ0hdIE1ha2UgcGdfZHVtcCBhbHdheXMgd3JpdGUgcnVsZXMgaW4gYSBzdGFibGUgb3Jk ZXIKCkluc3RlYWQgb2Ygc29ydGluZyBydWxlcyBieSBzY2hlbWEgYW5kIG5hbWUgYW5kIHRo ZW4gZmluYWxseSBvaWQgaW4KcGdfZHVtcCB3ZSBzb3J0IHRoZW0gYnkgc2NoZW1hLCBuYW1l IGFuZCByZWxhdGlvbiBuYW1lLiBUaGlzIHdheSB3ZSBtYWtlCnN1cmUgdGhhdCB0aGUgb3Jk ZXIgcnVsZXMgYXJlIGR1bXBlZCBpbiBjb25zaXN0ZW50IGFjcm9zcyBkdW1wIHBsdXMKcmVz dG9yZS4KClRoaXMgaXMgZXNwZWNpYWxseSBhIGJpZyBwcm9ibGVtIGlmIHdlIGhhdmUgdG8g YnJlYWsgZGVwZWRuZW5jeSBtYW55CmN5Y2xlcyBpbnZvbHZpbmcgdmlld3MgYW5kIHdlIGdl dCBhIGxvdCBvZiB2aWV3cyBuYW1lZCBfUkVUVVJOLgotLS0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wX3NvcnQuYyB8IDExICsrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA0Y2I3NTRjYWE1NS4u ZTBmNzBhYmRjYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTMwNSw2ICszMDUs MTcgQEAgRE9UeXBlTmFtZUNvbXBhcmUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAy KQogCQlpZiAoY21wdmFsICE9IDApCiAJCQlyZXR1cm4gY21wdmFsOwogCX0KKwllbHNlIGlm IChvYmoxLT5vYmpUeXBlID09IERPX1JVTEUpCisJeworCQlSdWxlSW5mbyAqcm9iajEgPSAq KFJ1bGVJbmZvICpjb25zdCAqKSBwMTsKKwkJUnVsZUluZm8gKnJvYmoyID0gKihSdWxlSW5m byAqY29uc3QgKikgcDI7CisKKwkJLyogU29ydCBieSB0aGUgcnVsZSdzIHRhYmxlIG5hbWUg KG5hbWVzcGFjZSBhbmQgbmFtZSB3ZXJlIGNvbnNpZGVyZWQgYWxyZWFkeSkgKi8KKwkJY21w dmFsID0gc3RyY21wKHJvYmoxLT5ydWxldGFibGUtPmRvYmoubmFtZSwKKwkJCQkJCXJvYmoy LT5ydWxldGFibGUtPmRvYmoubmFtZSk7CisJCWlmIChjbXB2YWwgIT0gMCkKKwkJCXJldHVy biBjbXB2YWw7CisJfQogCiAJLyogVXN1YWxseSBzaG91bGRuJ3QgZ2V0IGhlcmUsIGJ1dCBp ZiB3ZSBkbywgc29ydCBieSBPSUQgKi8KIAlyZXR1cm4gb2lkY21wKG9iajEtPmNhdElkLm9p ZCwgb2JqMi0+Y2F0SWQub2lkKTsKLS0gCjIuNDUuMgoK --------------VFW1MEAj20nQLB1F9tCfoNlF--