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 1rcO1d-002auL-Kc for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 11:11:01 +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 1rcO1c-003wvE-3D for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 11:11:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcO1b-003wv6-OX for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 11:10:59 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rcO1Z-008D02-Cz for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 11:10:59 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2d23114b19dso27796091fa.3 for ; Tue, 20 Feb 2024 03:10:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708427456; x=1709032256; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=umbNOKHiKWLF+pD8RzpHazhwH9JvMheqT/gX+JQ5Gpw=; b=OsciKKGNCR1r3YVboJcLZ01NdxG7zFEU2TMTGcib1gGYjJ7Cw10MjSllC/6MamlgrF 4uIGSdRz5Je6q1rnkzw+WteTdFN+SxRfemUiHOjlFFfZRljqOirxzsjabRs17gKrFWBS SyfWhvk7i2piPz/sMh0acKjgHwL+zfSuy59KUmNLuLsa8wptu4ql87vC/xexqkM/oGBH jHKvEtnBpsWpgJadJHBGxIRvU7zp0Winl6ypNhDjosL/QueTEn09N74KpjYqvWHk9We3 /O3D6t9oqm1ijBY0PIKlSR5Atjjgs6Ba/gUtl3zXiiqf0qy13Zs1TTmW2mI6x84Gs/ni nsvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708427456; x=1709032256; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=umbNOKHiKWLF+pD8RzpHazhwH9JvMheqT/gX+JQ5Gpw=; b=vvPjUsvaQdVIjI4/B+es4/BUi2WYu8jNnwdWIEWanDUL9AKZMOXlL8l9V2QNabowWP ft3KfSSv4C+nr2hPaLYn2CvdKHHdhYmY36V8j3kIBjek8T6UqMBaJFTHhSbhYFhji4VZ CgmwuByhFt99PRRogs+g5pM81caa2GmjudNG8BbSEx+GGM3rti1FSY9g92dK9xARbVSR froulwy+YdxhC+/8wApTCyMUyx1NQxVDhL9W6fZ4Ld2EDSQu4Kug2mCVAEYayAIXp5Io uN69Mo6e3LbhGfxlmToff5bRihu/IYK/6BD7Ckoup7IkiKtCSrZKtYr5d1tV5v0in4Zt m0EA== X-Gm-Message-State: AOJu0YwhzLKE183EAG9YIv6+Dd8tLQPO6xbIaKR4cWY4XZAKN7rBeCzc r/i133zDST1BaKFRWEyLvWoMzBzVuxEjLf0Lj1nDVTdkciqaAH9RTT/bTRpat/mbTb88hhgLyED 0qLrK+/4olxFNT3wL1bVF9EOAdTnHVKUQUqA= X-Google-Smtp-Source: AGHT+IHNE8jDq/zXvoRY1fHEQD5eGvN5nCMfUKkldmGi1hqzC/XIuc4G7KA+CxsESx9fYSXc/UW49WVYNXVpNmGCYyo= X-Received: by 2002:a2e:7206:0:b0:2d2:284d:3ae5 with SMTP id n6-20020a2e7206000000b002d2284d3ae5mr7562146ljc.45.1708427456118; Tue, 20 Feb 2024 03:10:56 -0800 (PST) MIME-Version: 1.0 From: Bharath Rupireddy Date: Tue, 20 Feb 2024 16:40:44 +0530 Message-ID: Subject: Add lookup table for replication slot invalidation causes To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a595800611ce437d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a595800611ce437d Content-Type: text/plain; charset="UTF-8" Hi, Presently, replication slot invalidation causes and their text are scattered into ReplicationSlotInvalidationCause enum and a bunch of macros. This is making the code to get invalidation cause text given the cause as enum and vice-versa unreadable, longer and inextensible. The attached patch adds a lookup table for all invalidation causes for better readability and extensibility. FWIW, another patch in discussion https://www.postgresql.org/message-id/CALj2ACWgACB4opnbqi=x7Hc4aqcgkXoLsh1VB+gfidXaDQNu_Q@mail.gmail.com adds a couple of other invalidation reasons, this lookup table makes the life easier and code shorter. Thoughts? -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000a595800611ce437d Content-Type: application/octet-stream; name="v1-0001-Add-lookup-table-for-replication-slot-invalidatio.patch" Content-Disposition: attachment; filename="v1-0001-Add-lookup-table-for-replication-slot-invalidatio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lsu9gd6f0 RnJvbSBiOTJiNTE2ZDBmYWNlNjU5NDYwNzY2YmIyM2I3ZThhOGUzNjdkNWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjAgRmViIDIwMjQgMTE6MDY6MjAgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxXSBBZGQgbG9va3VwIHRhYmxlIGZvciByZXBsaWNhdGlvbiBz bG90IGludmFsaWRhdGlvbiBjYXVzZXMKCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jICAgICAgfCAzNiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgfCAyNCArKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICB8IDE2ICsrKysrKy0tLS0tLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IGExNDI4NTViZDMuLmFmZjYyZjJlYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKQEAgLTc3LDYgKzc3LDE5IEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdE9uRGlz awogCVJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbnREYXRhIHNsb3RkYXRhOwogfSBSZXBsaWNhdGlv blNsb3RPbkRpc2s7CiAKKy8qCisgKiBMb29rdXAgdGFibGUgZm9yIGludmFsaWRhdGlvbiBjYXVz ZSBuYW1lcyBpbmRleGVkIGJ5IFJTX0lOVkFMX1hYWC4KKyAqLworY29uc3QgY2hhciAqY29uc3Qg U2xvdEludmFsaWRhdGlvbkNhdXNlc1tdID0geworCSJub25lIiwJCQkJCQkvKiBSU19JTlZBTF9O T05FICovCisJIndhbF9yZW1vdmVkIiwJCQkJLyogUlNfSU5WQUxfV0FMX1JFTU9WRUQgKi8KKwki cm93c19yZW1vdmVkIiwJCQkJLyogUlNfSU5WQUxfSE9SSVpPTiAqLworCSJ3YWxfbGV2ZWxfaW5z dWZmaWNpZW50IgkvKiBSU19JTlZBTF9XQUxfTEVWRUwgKi8KK307CisKK1N0YXRpY0Fzc2VydERl Y2wobGVuZ3Rob2YoU2xvdEludmFsaWRhdGlvbkNhdXNlcykgPT0gKFJTX0lOVkFMX01BWF9DQVVT RVMgKyAxKSwKKwkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOworCiAvKiBzaXplIG9mIHZl cnNpb24gaW5kZXBlbmRlbnQgZGF0YSAqLwogI2RlZmluZSBSZXBsaWNhdGlvblNsb3RPbkRpc2tD b25zdGFudFNpemUgXAogCW9mZnNldG9mKFJlcGxpY2F0aW9uU2xvdE9uRGlzaywgc2xvdGRhdGEp CkBAIC0yMjkwLDIzICsyMzAzLDE2IEBAIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAq bmFtZSkKIH0KIAogLyoKLSAqIE1hcHMgdGhlIHBnX3JlcGxpY2F0aW9uX3Nsb3RzLmNvbmZsaWN0 X3JlYXNvbiB0ZXh0IHZhbHVlIHRvCi0gKiBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVz ZSBlbnVtIHZhbHVlCisgKiBMb29rIHVwIGludmFsaWRhdGlvbiBjYXVzZSBieSBuYW1lLgogICov CiBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQotR2V0U2xvdEludmFsaWRhdGlvbkNh dXNlKGNoYXIgKmNvbmZsaWN0X3JlYXNvbikKK0dldFNsb3RJbnZhbGlkYXRpb25DYXVzZShjaGFy ICpuYW1lKQogewotCUFzc2VydChjb25mbGljdF9yZWFzb24pOwotCi0JaWYgKHN0cmNtcChjb25m bGljdF9yZWFzb24sIFNMT1RfSU5WQUxfV0FMX1JFTU9WRURfVEVYVCkgPT0gMCkKLQkJcmV0dXJu IFJTX0lOVkFMX1dBTF9SRU1PVkVEOwotCWVsc2UgaWYgKHN0cmNtcChjb25mbGljdF9yZWFzb24s IFNMT1RfSU5WQUxfSE9SSVpPTl9URVhUKSA9PSAwKQotCQlyZXR1cm4gUlNfSU5WQUxfSE9SSVpP TjsKLQllbHNlIGlmIChzdHJjbXAoY29uZmxpY3RfcmVhc29uLCBTTE9UX0lOVkFMX1dBTF9MRVZF TF9URVhUKSA9PSAwKQotCQlyZXR1cm4gUlNfSU5WQUxfV0FMX0xFVkVMOwotCWVsc2UKLQkJQXNz ZXJ0KDApOworCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlID0gUlNfSU5W QUxfTk9ORTsKKworCWZvciAoY2F1c2UgPSBSU19JTlZBTF9OT05FOyBjYXVzZSA8PSBSU19JTlZB TF9NQVhfQ0FVU0VTOyBjYXVzZSsrKQorCQlpZiAoc3RyY21wKFNsb3RJbnZhbGlkYXRpb25DYXVz ZXNbY2F1c2VdLCBuYW1lKSA9PSAwKQorCQkJYnJlYWs7CiAKLQkvKiBLZWVwIGNvbXBpbGVyIHF1 aWV0ICovCi0JcmV0dXJuIFJTX0lOVkFMX05PTkU7CisJcmV0dXJuIGNhdXNlOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCBkMmZhNWU2NjlhLi5jMTA4YmY5NjA4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtNDEzLDI0ICs0MTMsMTIgQEAgcGdfZ2V0 X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQludWxsc1tpKytdID0gdHJ1 ZTsKIAkJZWxzZQogCQl7Ci0JCQlzd2l0Y2ggKHNsb3RfY29udGVudHMuZGF0YS5pbnZhbGlkYXRl ZCkKLQkJCXsKLQkJCQljYXNlIFJTX0lOVkFMX05PTkU6Ci0JCQkJCW51bGxzW2krK10gPSB0cnVl OwotCQkJCQlicmVhazsKLQotCQkJCWNhc2UgUlNfSU5WQUxfV0FMX1JFTU9WRUQ6Ci0JCQkJCXZh bHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bShTTE9UX0lOVkFMX1dBTF9SRU1PVkVEX1RF WFQpOwotCQkJCQlicmVhazsKLQotCQkJCWNhc2UgUlNfSU5WQUxfSE9SSVpPTjoKLQkJCQkJdmFs dWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKFNMT1RfSU5WQUxfSE9SSVpPTl9URVhUKTsK LQkJCQkJYnJlYWs7Ci0KLQkJCQljYXNlIFJTX0lOVkFMX1dBTF9MRVZFTDoKLQkJCQkJdmFsdWVz W2krK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKFNMT1RfSU5WQUxfV0FMX0xFVkVMX1RFWFQpOwot CQkJCQlicmVhazsKLQkJCX0KKwkJCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNh dXNlID0gc2xvdF9jb250ZW50cy5kYXRhLmludmFsaWRhdGVkOworCisJCQlpZiAoY2F1c2UgPT0g UlNfSU5WQUxfTk9ORSkKKwkJCQludWxsc1tpKytdID0gdHJ1ZTsKKwkJCWVsc2UKKwkJCQl2YWx1 ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oU2xvdEludmFsaWRhdGlvbkNhdXNlc1tjYXVz ZV0pOwogCQl9CiAKIAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5k YXRhLmZhaWxvdmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBlNzA2Y2E4MzRjLi5iMjY2 OTdiYTE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC00MCw2ICs0MCw5IEBAIHR5cGVkZWYg ZW51bSBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW5jeQogLyoKICAqIFNsb3RzIGNhbiBiZSBpbnZh bGlkYXRlZCwgZS5nLiBkdWUgdG8gbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4gSWYgc28sIHRoZQog ICogJ2ludmFsaWRhdGVkJyBmaWVsZCBpcyBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIF9OT05F LgorICoKKyAqIElmIHlvdSBhZGQgYSBuZXcgaW52YWxpZGF0aW9uIGNhdXNlIGhlcmUsIHJlbWVt YmVyIHRvIGFkZCBpdHMgbmFtZSBpbgorICogU2xvdEludmFsaWRhdGlvbkNhdXNlcyBpbiB0aGUg c2FtZSBvcmRlciBhcyB0aGF0IG9mIHRoZSBjYXVzZS4KICAqLwogdHlwZWRlZiBlbnVtIFJlcGxp Y2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiB7CkBAIC01MiwxMyArNTUsMTAgQEAgdHlwZWRl ZiBlbnVtIFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiAJUlNfSU5WQUxfV0FMX0xF VkVMLAogfSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZTsKIAotLyoKLSAqIFRoZSBw b3NzaWJsZSB2YWx1ZXMgZm9yICdjb25mbGljdF9yZWFzb24nIHJldHVybmVkIGluCi0gKiBwZ19n ZXRfcmVwbGljYXRpb25fc2xvdHMuCi0gKi8KLSNkZWZpbmUgU0xPVF9JTlZBTF9XQUxfUkVNT1ZF RF9URVhUICJ3YWxfcmVtb3ZlZCIKLSNkZWZpbmUgU0xPVF9JTlZBTF9IT1JJWk9OX1RFWFQgICAg ICJyb3dzX3JlbW92ZWQiCi0jZGVmaW5lIFNMT1RfSU5WQUxfV0FMX0xFVkVMX1RFWFQgICAid2Fs X2xldmVsX2luc3VmZmljaWVudCIKKy8qIE1heGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBj YXVzZXMgKi8KKyNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9XQUxfTEVWRUwK KworZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IFNsb3RJbnZhbGlkYXRpb25D YXVzZXNbXTsKIAogLyoKICAqIE9uLURpc2sgZGF0YSBvZiBhIHJlcGxpY2F0aW9uIHNsb3QsIHBy ZXNlcnZlZCBhY3Jvc3MgcmVzdGFydHMuCkBAIC0yNzUsNiArMjc1LDYgQEAgZXh0ZXJuIHZvaWQg Q2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9vbCBpc19zaHV0ZG93bik7CiBleHRlcm4gdm9p ZCBDaGVja1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiBleHRlcm4gdm9pZCBDaGVja1Nsb3RQZXJt aXNzaW9ucyh2b2lkKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQot CQkJR2V0U2xvdEludmFsaWRhdGlvbkNhdXNlKGNoYXIgKmNvbmZsaWN0X3JlYXNvbik7CisJCQlH ZXRTbG90SW52YWxpZGF0aW9uQ2F1c2UoY2hhciAqY2F1c2UpOwogCiAjZW5kaWYJCQkJCQkJLyog U0xPVF9IICovCi0tIAoyLjM0LjEKCg== --000000000000a595800611ce437d--