diff --git a/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx b/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx index b55927b03f3..5220601264e 100644 --- a/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx +++ b/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx @@ -14,13 +14,13 @@ Select the **Add New User** button. On the **Add New User** page, for the "User Type" select **Machine User*. -The form changes when you select make that selection so it's asking for a name and optional email. Enter a name for the machine user. +The form changes when you make that selection so it's asking for a name and optional email. Enter a name for the machine user. ## Creating an access key Check the **Create Access Key** checkbox in **Add New User** page. The form will expand to ask for an Access Key Name and an Expiry time. -Give the key a name in the Access Key Name field and enter a value from 1 to 365 for the number of days from now that you want this key to be valid in the Expires In field. The date on which the key will expire is shown in the underneath the field. +Give the key a name in the Access Key Name field and enter a value from 1 to 365 for the number of days from now that you want this key to be valid in the Expires In field. The date on which the key will expire is shown underneath the field. Select the **Add User** button. @@ -34,7 +34,7 @@ Once you have securely stored your access key, select the **Key Stored Safely** Select the **Projects** tab to view all your projects. -Select the project from which you want to monitor the a database. +Select the project from which you want to monitor the database. This will take you to the project's overview. Select the **Users** tab, and locate the machine user you just created. @@ -46,5 +46,5 @@ An **Assign Project Roles** dialog will appear with a selection of roles that ca Select the "estate ingester" role and then select the **Submit** button. -Your new machine user is ready for to ingest data from the Beacon Agent. +Your new machine user is now ready to ingest data from the Beacon Agent. diff --git a/gatsby-config.js b/gatsby-config.js index 3903e418d30..d2ce185befe 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -327,9 +327,12 @@ module.exports = { noInlineHighlight: true, aliases: { postgresql: "sql", + psql: "sql", sh: "shell", "c++": "cpp", console: "shell-session", + output: "none", + terminal: "none", }, }, }, diff --git a/install_template/templates/products/replication-server/arm64_index.njk b/install_template/templates/products/replication-server/arm64_index.njk index d12e583ba05..3d0ff9d34b6 100644 --- a/install_template/templates/products/replication-server/arm64_index.njk +++ b/install_template/templates/products/replication-server/arm64_index.njk @@ -5,5 +5,5 @@ {% block frontmatter %} {{super()}} redirects: - - /eprs/latest/03_installation/03_installing_rpm_package/x86_amd64/ + - /eprs/latest/03_installation/03_installing_rpm_package/arm64/ {% endblock frontmatter %} diff --git a/package-lock.json b/package-lock.json index 2af06ad76f7..bf1b2fddf1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", "remark-admonitions": "github:josh-heyer/remark-admonitions", - "sass": "^1.77.2", + "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", "unist-util-visit-parents": "^3.1.1" }, @@ -2026,10 +2026,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", - "license": "MIT", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2720,19 +2719,14 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, "node_modules/@lezer/common": { "version": "0.15.12", "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", @@ -3861,16 +3855,278 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "hasInstallScript": true, "dependencies": { + "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">= 10.0.0" }, @@ -4224,18 +4480,18 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/get-port": { "version": "3.2.0", @@ -4252,9 +4508,9 @@ } }, "node_modules/@types/google.maps": { - "version": "3.55.11", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.11.tgz", - "integrity": "sha512-F3VuPtjKj4UGuyym75pqmgPBOHbT/i7I6/D+4DdtSzbeu2aWZG1ENwpbZOd46uO+PSAz9flJEhxxi+b4MVb4gQ==" + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==" }, "node_modules/@types/hast": { "version": "2.3.4", @@ -4356,9 +4612,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==" }, "node_modules/@types/reach__router": { "version": "1.3.11", @@ -4711,133 +4967,133 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -4874,9 +5130,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -4884,14 +5140,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -4985,9 +5233,9 @@ } }, "node_modules/algoliasearch-helper": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.1.tgz", - "integrity": "sha512-fSxJ4YreH4kOME9CnKazbAn2tK/rvBoV37ETd6nTt4j7QfkcnW+c+F22WfuE9Q/sRpvOMnUwU/BXAVEiwW7p/w==", + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz", + "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -5746,20 +5994,20 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5908,20 +6156,20 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -5930,13 +6178,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -6064,12 +6316,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6123,9 +6381,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001683", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001683.tgz", + "integrity": "sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==", "funding": [ { "type": "opencollective", @@ -6479,9 +6737,9 @@ } }, "node_modules/clipboardy/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -7067,9 +7325,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7495,6 +7753,22 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7829,9 +8103,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.361.tgz", - "integrity": "sha512-VocVwjPp05HUXzf3xmL0boRn5b0iyqC7amtDww84Jb1QJNPBc7F69gJyEeXRoriLBC4a5pSyckdllrXAg4mmRA==" + "version": "1.5.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -7847,9 +8121,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -7903,9 +8177,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -8015,6 +8289,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -8077,13 +8370,14 @@ } }, "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -8126,9 +8420,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -8726,6 +9020,25 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esniff/node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -8886,36 +9199,36 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -9005,9 +9318,9 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -9263,9 +9576,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9282,12 +9595,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -9374,9 +9687,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -9683,9 +9996,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -11578,13 +11894,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11928,11 +12249,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12005,6 +12326,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -12760,30 +13092,30 @@ } }, "node_modules/instantsearch-ui-components": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.7.0.tgz", - "integrity": "sha512-4dHmCFbKWap5iSR2VmF5pSBECGQbAa8sPMoazMihYY2/0ahVzdHrOOtT8/hferG1A/xTT8nzfU7PIg+8lomNsA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.9.0.tgz", + "integrity": "sha512-ugQ+XdPx3i3Sxu+woRo6tPE0Fz/kWd4KblTUfZD1TZZBsm/8qFvcbg5dVBDvXX9v7ntoyugXCzC/XCZMzrSkig==", "dependencies": { "@babel/runtime": "^7.1.2" } }, "node_modules/instantsearch.js": { - "version": "4.72.2", - "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.72.2.tgz", - "integrity": "sha512-6/4XbXk91f9RV9TNvy+yKxtwZoKDsk0xBXdlA7nKYo//DtFkA/jNoqzuUJIWzf/59wSLxs7/LN/H4FLbBp6UNw==", + "version": "4.75.5", + "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.75.5.tgz", + "integrity": "sha512-XnplrpnSfFzVtoL7YBKWbf3FPwmjfSFM8BN+nnuRsfzwUwWgb7zQLxh2mRtohUFI9fnA7vAcJlDcmichfYgjmA==", "dependencies": { "@algolia/events": "^4.0.1", "@types/dom-speech-recognition": "^0.0.1", - "@types/google.maps": "^3.45.3", + "@types/google.maps": "^3.55.12", "@types/hogan.js": "^3.0.0", "@types/qs": "^6.5.3", - "algoliasearch-helper": "3.22.1", + "algoliasearch-helper": "3.22.5", "hogan.js": "^3.0.2", "htm": "^3.0.0", - "instantsearch-ui-components": "0.7.0", + "instantsearch-ui-components": "0.9.0", "preact": "^10.10.0", "qs": "^6.5.1 < 6.10", - "search-insights": "^2.13.0" + "search-insights": "^2.17.2" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6" @@ -14519,10 +14851,9 @@ } }, "node_modules/markdown-to-jsx": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", - "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", - "license": "MIT", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.0.tgz", + "integrity": "sha512-130nIMbJY+woOQJ11xTqEtYko60t6EpNkZuqjKMferL3udtob3nRfzXOdsiA26NPemiR7w/hR8M3/B9yiYPGZg==", "engines": { "node": ">= 10" }, @@ -14908,9 +15239,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -15170,11 +15504,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "optionalDependencies": { - "msgpackr-extract": "^3.0.1" + "msgpackr-extract": "^3.0.2" } }, "node_modules/msgpackr-extract": { @@ -15232,9 +15566,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -15365,9 +15699,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" }, "node_modules/node-fetch": { "version": "2.6.9", @@ -15388,16 +15722,6 @@ } } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/node-gyp-build-optional-packages": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", @@ -15494,9 +15818,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/nopt": { "version": "1.0.10", @@ -15599,9 +15923,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16227,9 +16554,9 @@ } }, "node_modules/password-prompt/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -16337,9 +16664,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/path-type": { "version": "4.0.0", @@ -16367,9 +16694,9 @@ "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -16526,9 +16853,9 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -16537,12 +16864,16 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -17058,9 +17389,9 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/preact": { - "version": "10.22.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.1.tgz", - "integrity": "sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==", + "version": "10.25.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.0.tgz", + "integrity": "sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -17116,11 +17447,10 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -17297,11 +17627,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -17388,9 +17718,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17463,14 +17793,13 @@ } }, "node_modules/react-bootstrap": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz", - "integrity": "sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==", - "license": "MIT", + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz", + "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", - "@restart/ui": "^1.6.8", + "@restart/ui": "^1.6.9", "@types/react-transition-group": "^4.4.6", "classnames": "^2.3.2", "dom-helpers": "^5.2.1", @@ -17690,33 +18019,33 @@ } }, "node_modules/react-instantsearch": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.11.4.tgz", - "integrity": "sha512-yzGxA9SxN+BR/ZruISJYXdZJV3siZu+qBO5glHtfJG/V597CwCzcWRSJQf0z/lSxiYlbfc6eouBpPglwCik8Bw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.13.8.tgz", + "integrity": "sha512-14t7qAlp5H2dD+ljQLPhMZt40JX7YGKXdAooGZBo8IB+0M7NHAhsn/SVRdxSObb9bx1hg4uaBIZ51Wajgw8Xbg==", "dependencies": { "@babel/runtime": "^7.1.2", - "instantsearch-ui-components": "0.7.0", - "instantsearch.js": "4.72.2", - "react-instantsearch-core": "7.11.4" + "instantsearch-ui-components": "0.9.0", + "instantsearch.js": "4.75.5", + "react-instantsearch-core": "7.13.8" }, "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", + "algoliasearch": ">= 3.1 < 6", "react": ">= 16.8.0 < 19", "react-dom": ">= 16.8.0 < 19" } }, "node_modules/react-instantsearch-core": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.11.4.tgz", - "integrity": "sha512-LGlioZu3vfk5ODQDwUO0cZrOA60aieEx/P6RZhstwSpjmmQW+2P14lOk38OIQ8MA23fEqwCmLJn9kBKpgqfHjg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.13.8.tgz", + "integrity": "sha512-1bcHCFJ3Qw9HWFkeM5MNMqzw0BI4LIR61qI1lPAcJREih9NXy3R3inPeOk2T2FKkgAp5PJbjNQ3DOTxErV88jg==", "dependencies": { "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "3.22.1", - "instantsearch.js": "4.72.2", + "algoliasearch-helper": "3.22.5", + "instantsearch.js": "4.75.5", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", + "algoliasearch": ">= 3.1 < 6", "react": ">= 16.8.0 < 19" } }, @@ -19082,10 +19411,9 @@ } }, "node_modules/sass": { - "version": "1.77.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", - "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", - "license": "MIT", + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -19165,9 +19493,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" }, "node_modules/sax": { "version": "1.2.4", @@ -19184,9 +19512,9 @@ } }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19201,9 +19529,9 @@ } }, "node_modules/search-insights": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz", - "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==" + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==" }, "node_modules/section-matter": { "version": "1.0.0", @@ -19251,9 +19579,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -19286,6 +19614,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -19321,14 +19657,14 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -19339,6 +19675,22 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19458,13 +19810,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19699,9 +20055,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -20521,12 +20877,12 @@ } }, "node_modules/terser": { - "version": "5.16.9", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.9.tgz", - "integrity": "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -20538,15 +20894,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -21281,9 +21637,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -21292,14 +21648,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -21626,9 +21986,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -21662,33 +22022,32 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.79.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.79.0.tgz", - "integrity": "sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { diff --git a/package.json b/package.json index 401456e5d9a..b7fd88f98fd 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", "remark-admonitions": "github:josh-heyer/remark-admonitions", - "sass": "^1.77.2", + "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", "unist-util-visit-parents": "^3.1.1" }, diff --git a/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx b/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx index 4367875be41..c3bab4f2b74 100644 --- a/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx +++ b/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx @@ -8,7 +8,7 @@ navTitle: "On Linux ARM64" # Leaf template: products/replication-server/arm64_index.njk redirects: - - /eprs/latest/03_installation/03_installing_rpm_package/x86_amd64/ + - /eprs/latest/03_installation/03_installing_rpm_package/arm64/ navigation: - eprs_debian_12 diff --git a/product_docs/docs/livecompare/3/command_line_usage.mdx b/product_docs/docs/livecompare/3/command_line_usage.mdx index 568f3b4f197..8e6ae8b4105 100644 --- a/product_docs/docs/livecompare/3/command_line_usage.mdx +++ b/product_docs/docs/livecompare/3/command_line_usage.mdx @@ -34,11 +34,11 @@ dsn = port=5432 dbname=liveoutput user=postgres schemas = schema_name = 'public' ``` -This basic template compares three connections, `live1`, `live2`, and `live3`, and outputs the results to the `liveoutput` database. LiveCompare only uses the `public` schema in the comparison. +This basic template compares three connections, `live1`, `live2`, and `live3`, and outputs the results to the `liveoutput` database. LiveCompare uses only the `public` schema in the comparison. ### Running the comparison -To run the comparison, run livecompare and pass it the name of your settings file as an argument. If you have created a `my_project.ini` file, execute the following command: +To run the comparison, run livecompare and pass it the name of your settings file as an argument. If you created a `my_project.ini` file, execute the following command: ``` livecompare my_project.ini @@ -173,7 +173,7 @@ dsn = dbname=liveoutpu schemas = schema_name = 'public' ``` -As the DSN under `Output Connection` (the LiveCompare cache database) is incorrect due to a mis-spelling of `liveoutput`, running LiveCompare initially fails with: +As the DSN under `Output Connection` (the LiveCompare cache database) is incorrect due to a misspelling of `liveoutput`, running LiveCompare initially fails with: ``` Output connection is not reachable. diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx index a07085f47a0..cbda0ee2ce9 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx @@ -1,7 +1,9 @@ --- title: "Release notes" navigation: +- odbc_16.00.0000.02_rel_notes - odbc_16.00.0000.01_rel_notes + --- The EDB ODBC connector documentation describes the latest version of the EDB ODBC connector. @@ -10,4 +12,6 @@ Release notes describe what's new in a release. When a minor or patch release in | Version | Release date | | --------------------------------------------- | ------------ | +| [16.00.0000.02](odbc_16.00.0000.02_rel_notes) | 22 Nov 2024 | | [16.00.0000.01](odbc_16.00.0000.01_rel_notes) | 09 Nov 2023 | + diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx new file mode 100644 index 00000000000..25c509747a3 --- /dev/null +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx @@ -0,0 +1,21 @@ +--- +title: "EDB ODBC Connector 16.00.0000.02 release notes" +navTitle: Version 16.00.0000.02 +--- + +Released: 22 Nov 2024 + +EDB ODBC Connector 16.00.0000.02 includes the following enhancement: + +| Type | Description | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Enhancement | Added support for EDB Postgres Advanced Server version 17.2. | + +!!!note + If you are upgrading an earlier ODBC version on Ubuntu/Debian installation, you need to run the install command and specify the version number in the package name. For example the command for Ubuntu 20 is: + + ``` + sudo apt-get install edb-odbc=16.00.0000.02-1.focal + ``` + + If you get a message about downgrading, you can ignore it. \ No newline at end of file diff --git a/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx b/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx index 06a2bccbe1f..61e0fe8bf6f 100644 --- a/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx +++ b/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx @@ -9,11 +9,12 @@ The ODBC Connector is supported on the same platforms as EDB Postgres Advanced S This table lists the latest ODBC Connector versions and their supported corresponding EDB Postgres Advanced Server (EPAS) versions. -| ODBC Connector | EPAS 16 | EPAS 15 | EPAS 14 | EPAS 13 | EPAS 12 | EPAS 11 | +| ODBC Connector | EPAS 17 | EPAS 16 | EPAS 15 | EPAS 14 | EPAS 13 | EPAS 12 | | ------------------------------------------------------------------------------ | ------- | ------- | ------- | ------- | ------- | ------- | -| [16.00.0000.01](01_odbc_rel_notes/odbc_16.00.0000.01_rel_notes/) | Y | Y | Y | Y | Y | Y | -| [13.02.0.02](/odbc_connector/13/01_odbc_rel_notes/odbc_13.2.0.02_rel_notes) | N | Y | Y | Y | Y | Y | -| [13.02.0.01](/odbc_connector/13/01_odbc_rel_notes/02_odbc_13.2.0.01_rel_notes) | N | N | Y | Y | Y | Y | -| [13.01.0.02](/odbc_connector/13/01_odbc_rel_notes/03_odbc_13.1.0.02_rel_notes) | N | N | Y | Y | Y | Y | -| [13.01.0.01](/odbc_connector/13/01_odbc_rel_notes/04_odbc_13.1.0.01_rel_notes) | N | N | N | Y | Y | Y | -| [13.00.0.01](/odbc_connector/13/01_odbc_rel_notes/05_odbc_13.0.0.01_rel_notes) | N | N | N | Y | Y | Y | \ No newline at end of file +| [16.00.0000.02](01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes/) | Y | Y | Y | Y | Y | Y | +| [16.00.0000.01](01_odbc_rel_notes/odbc_16.00.0000.01_rel_notes/) | N | Y | Y | Y | Y | Y | +| [13.02.0.02](/odbc_connector/13/01_odbc_rel_notes/odbc_13.2.0.02_rel_notes) | N | N | Y | Y | Y | Y | +| [13.02.0.01](/odbc_connector/13/01_odbc_rel_notes/02_odbc_13.2.0.01_rel_notes) | N | N | N | Y | Y | Y | +| [13.01.0.02](/odbc_connector/13/01_odbc_rel_notes/03_odbc_13.1.0.02_rel_notes) | N | N | N | Y | Y | Y | +| [13.01.0.01](/odbc_connector/13/01_odbc_rel_notes/04_odbc_13.1.0.01_rel_notes) | N | N | N | N | Y | Y | +| [13.00.0.01](/odbc_connector/13/01_odbc_rel_notes/05_odbc_13.0.0.01_rel_notes) | N | N | N | N | Y | Y | \ No newline at end of file diff --git a/product_docs/docs/pem/9/considerations/licensing.mdx b/product_docs/docs/pem/9/considerations/licensing.mdx index 05f696ddcb6..5a19cd307a2 100644 --- a/product_docs/docs/pem/9/considerations/licensing.mdx +++ b/product_docs/docs/pem/9/considerations/licensing.mdx @@ -1,9 +1,6 @@ --- title: "How PEM licensing works" navTitle: "Licensing" -redirects: -- /pem/latest/pem_ha_setup/ -- /pem/latest/pem_ha_setup/setup_ha_using_efm/ --- PEM is intended to be used for monitoring and managing Postgres diff --git a/product_docs/docs/pgd/3.6/index.mdx b/product_docs/docs/pgd/3.6/index.mdx index 305154e426c..f2b8b3da03e 100644 --- a/product_docs/docs/pgd/3.6/index.mdx +++ b/product_docs/docs/pgd/3.6/index.mdx @@ -19,7 +19,7 @@ cluster work. Two different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - PostgreSQL compatible and optimized for replication +- [EDB Postgres Extended Server](/pge/latest) - PostgreSQL compatible and optimized for replication What Postgres distribution and version is right for you depends on the features you need. See the feature matrix in [Choosing a Postgres distribution](/pgd/latest/planning/choosing_server/) for detailed comparison. diff --git a/product_docs/docs/pgd/3.7/index.mdx b/product_docs/docs/pgd/3.7/index.mdx index 24ce5369cf3..3a1d208deea 100644 --- a/product_docs/docs/pgd/3.7/index.mdx +++ b/product_docs/docs/pgd/3.7/index.mdx @@ -12,7 +12,7 @@ EDB Postgres Distributed consists of several components that make the whole clus Three different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - Postgres compatible and optimized for replication (formerly known as 2nd Quadrant Postgres) +- [EDB Postgres Extended Server](/pge/latest) - Postgres compatible and optimized for replication (formerly known as 2nd Quadrant Postgres) - [EDB Postgres Advanced Server](/epas/latest) - Postgres or Oracle compatible, optimized for replication, and additional enterprise features What Postgres distribution and version is right for you depends on the features you need. See [Postgres-specific features](/pgd/3.7/bdr/#postgres-specific-features) for detailed information. diff --git a/product_docs/docs/pgd/4/overview/index.mdx b/product_docs/docs/pgd/4/overview/index.mdx index 0f1e936ddf9..4d6f7cc86e2 100644 --- a/product_docs/docs/pgd/4/overview/index.mdx +++ b/product_docs/docs/pgd/4/overview/index.mdx @@ -15,7 +15,7 @@ cluster work. Three different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - PostgreSQL compatible and optimized for replication +- [EDB Postgres Extended Server](/pge/latest) - PostgreSQL compatible and optimized for replication - [EDB Postgres Advanced Server](/epas/latest) - Oracle compatible, optimized for replication, and additional enterprise features What Postgres distribution and version is right for you depends on the features you need. diff --git a/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx b/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx index 150e8474c8c..e636ae25fbd 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx @@ -61,11 +61,11 @@ If you're familiar with PostgreSQL's `synchronous_standby_names` feature, be awa Currently, there are four commit scope kinds. The following is a summary, with links to more details. -### `SYNCHRONOUS_COMMIT` +### `SYNCHRONOUS COMMIT` -Synchronous Commit is a commit scope option that's designed to behave like the native Postgres `synchronous_commit` option, but is usable from within the commit scope environment. Unlike `GROUP COMMIT`, it's a synchronous non-two-phase commit operation. Like `GROUP COMMIT`, it supports an optional `DEGRADE ON` clause. The commit scope group that comes before this option controls the groups and confirmation requirements the `SYNCHRONOUS_COMMIT` uses. +Synchronous Commit is a commit scope option that's designed to behave like the native Postgres `synchronous_commit` option, but is usable from within the commit scope environment. Unlike `GROUP COMMIT`, it's a synchronous non-two-phase commit operation. Like `GROUP COMMIT`, it supports an optional `DEGRADE ON` clause. The commit scope group that comes before this option controls the groups and confirmation requirements the `SYNCHRONOUS COMMIT` uses. -For more details, see [`SYNCHRONOUS_COMMIT`](synchronous_commit). +For more details, see [`SYNCHRONOUS COMMIT`](synchronous_commit). ### `GROUP COMMIT` @@ -94,7 +94,7 @@ For more details, see [`LAG CONTROL`](lag-control). Commit scope rules are composed of one or more operations that work in combination. Use an AND to form a single rule. For example: ``` -MAJORITY (Region_A) SYNCHRONOUS_COMMIT AND ANY 1 (Region_A) LAG CONTROL (MAX_LAG_SIZE = '50MB') +MAJORITY (Region_A) SYNCHRONOUS COMMIT AND ANY 1 (Region_A) LAG CONTROL (MAX_LAG_SIZE = '50MB') ``` The first operation sets up a synchronous commit against a majority of `Region_A`. The second operation adds lag control that starts pushing the commit delay up when any one of the nodes in `Region_A` has more than 50MB of lag. This combination of operations allows the lag control to operate when any node is lagging. diff --git a/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx b/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx index 064f2674300..0c3980b09fc 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx @@ -4,7 +4,7 @@ navTitle: Degrading deepToC: true --- -`SYNCHRONOUS_COMMIT`, `GROUP COMMIT`, and `CAMO` each have the optional capability of degrading the requirements for transactions when particular performance thresholds are crossed. +`SYNCHRONOUS COMMIT`, `GROUP COMMIT`, and `CAMO` each have the optional capability of degrading the requirements for transactions when particular performance thresholds are crossed. When a node is applying a transaction and that transaction times out, it can be useful to trigger a process of degrading the requirements of the transaction to be completed, rather than just rolling back. @@ -24,31 +24,31 @@ This mechanism alone is insufficient for the intended behavior, as this alone wo To avoid this, the PGD manager process also periodically (every 5s) checks the connectivity and apply rate (the one in [bdr.node_replication_rates](/pgd/latest/reference/catalogs-visible/#bdrnode_replication_rates)) and if there are commit scopes that would degrade at that point based on the current state of replication, they will be automatically degraded—such that any transaction using that commit scope when processing after that uses the degraded rule instead of waiting for timeout—until the manager process detects that replication is moving swiftly enough again. -## SYNCHRONOUS_COMMIT and GROUP COMMIT +## SYNCHRONOUS COMMIT and GROUP COMMIT -Both `SYNCHRONOUS_COMMIT` and `GROUP COMMIT` have `timeout` and `require_write_lead` parameters, with defaults of `0` and `false` respectively. You should probably always set the `timeout`, as the default of `0` causes an instant degrade. You can also require that the write leader be the originator of the transaction in order to switch to degraded mode (again, default is `false`). +Both `SYNCHRONOUS COMMIT` and `GROUP COMMIT` have `timeout` and `require_write_lead` parameters, with defaults of `0` and `false` respectively. You should probably always set the `timeout`, as the default of `0` causes an instant degrade. You can also require that the write leader be the originator of the transaction in order to switch to degraded mode (again, default is `false`). -Both `SYNCHRONOUS_COMMIT` and `GROUP COMMIT` also have options regarding which rule you can degrade to—which depends on which rule you are degrading from. +Both `SYNCHRONOUS COMMIT` and `GROUP COMMIT` also have options regarding which rule you can degrade to—which depends on which rule you are degrading from. First of all, you can degrade to asynchronous operation: ```sql -ALL (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO ASYNC +ALL (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO ASYNC ``` You can also degrade to a less restrictive commit group with the same commit scope kind (again as long as the kind is either `SYNCHRONOUS_COMMIT` or `GROUP COMMIT`). For instance, you can degrade as follows: ```sql -ALL (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO MAJORITY (left_dc) SYNCHRONOUS_COMMIT +ALL (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO MAJORITY (left_dc) SYNCHRONOUS COMMIT ``` or as follows: ```sql -ANY 3 (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO ANY 2 (left_dc) SYNCHRONOUS_COMMIT +ANY 3 (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO ANY 2 (left_dc) SYNCHRONOUS COMMIT ``` -But you cannot degrade from `SYNCHRONOUS_COMMIT` to `GROUP COMMIT` or the other way around. +But you cannot degrade from `SYNCHRONOUS COMMIT` to `GROUP COMMIT` or the other way around. ## CAMO diff --git a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx index f39a6e66271..668c0a13808 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx @@ -3,31 +3,30 @@ title: Synchronous Commit deepToC: true --- -Commit scope kind: `SYNCHRONOUS_COMMIT` -alias: `SYNCHRONOUS COMMIT` +Commit scope kind: `SYNCHRONOUS COMMIT` ## Overview -PGD's `SYNCHRONOUS_COMMIT` is a commit scope kind that works in a way that's more like PostgreSQL's [`synchronous_commit`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT) option in its underlying operation. Unlike the PostgreSQL option, though, it's configured as a commit scope and is easier to configure and interact with in PGD. +PGD's `SYNCHRONOUS COMMIT` is a commit scope kind that works in a way that's more like PostgreSQL's [`synchronous_commit`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT) option in its underlying operation. Unlike the PostgreSQL option, though, it's configured as a commit scope and is easier to configure and interact with in PGD. -Unlike other commit scope kinds, such as `GROUP COMMIT` and `CAMO`, the transactions in a `SYNCHRONOUS_COMMIT` operation aren't transformed into a two-phase commit (2PC) transaction. They work more like a Postgres `synchronous_commit`. +Unlike other commit scope kinds, such as `GROUP COMMIT` and `CAMO`, the transactions in a `SYNCHRONOUS COMMIT` operation aren't transformed into a two-phase commit (2PC) transaction. They work more like a Postgres `synchronous_commit`. ## Example -In this example, when this commit scope is in use, any node in the `left_dc` group uses `SYNCHRONOUS_COMMIT` to replicate changes to the other nodes in the `left_dc` group. It looks for a majority of nodes in the `left_dc` group to confirm that they committed the transaction. +In this example, when this commit scope is in use, any node in the `left_dc` group uses `SYNCHRONOUS COMMIT` to replicate changes to the other nodes in the `left_dc` group. It looks for a majority of nodes in the `left_dc` group to confirm that they committed the transaction. ``` SELECT bdr.create_commit_scope( commit_scope_name := 'example_sc_scope', origin_node_group := 'left_dc', - rule := 'MAJORITY (left_dc) SYNCHRONOUS_COMMIT', + rule := 'MAJORITY (left_dc) SYNCHRONOUS COMMIT', wait_for_ready := true ); ``` ## Configuration -`SYNCHRONOUS_COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS_COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous_commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. +`SYNCHRONOUS COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous-commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. ## Confirmation @@ -40,4 +39,7 @@ SELECT bdr.create_commit_scope( ## Details -Currently `SYNCHRONOUS_COMMIT` doesn't use the confirmation levels of the commit scope rule syntax. +Currently `SYNCHRONOUS COMMIT` doesn't use the confirmation levels of the commit scope rule syntax. + +In commit scope rules, the original keyword `SYNCHRONOUS_COMMIT` is now aliased to `SYNCHRONOUS COMMIT`. The use of a space instead of an underscore helps distinguish it from Postgres's native `SYNCHRONOUS_COMMIT`. + diff --git a/product_docs/docs/pgd/5.6/compatibility.mdx b/product_docs/docs/pgd/5.6/compatibility.mdx index 4ac0332e6ad..d7812a703e9 100644 --- a/product_docs/docs/pgd/5.6/compatibility.mdx +++ b/product_docs/docs/pgd/5.6/compatibility.mdx @@ -1,20 +1,55 @@ --- -title: PGD compatibility by PostgreSQL version +title: PGD compatibility navTitle: Compatibility description: Compatibility of EDB Postgres Distributed with different versions of PostgreSQL +deepToC: true --- -The following table shows the major versions of PostgreSQL and each version of EDB Postgres Distributed (PGD) they are compatible with. +## PGD compatibility with PostgreSQL versions -| Postgres
Version | PGD 5 | PGD 4 | PGD 3.7 | PGD 3.6 | -|----------------------|--------------|--------------|------------------|------------------| -| 16 | [5.3+](/pgd/latest/) | | | | -| 15 | [5](/pgd/latest/) | | | | -| 14 | [5](/pgd/latest/) | [4](/pgd/4/) | | | -| 13 | [5](/pgd/latest/) | [4](/pgd/4/) | [3.7](/pgd/3.7/) | | -| 12 | [5](/pgd/latest/) | [4](/pgd/4/) | [3.7](/pgd/3.7/) | | -| 11 | | | [3.7](/pgd/3.7/) | [3.6](/pgd/3.6/) | -| 10 | | | | [3.6](/pgd/3.6/) | +The following table shows the major versions of PostgreSQL and each version of EDB Postgres Distributed (PGD) they are compatible with. +| Postgres Version | PGD 5 | PGD 4 | +|----------------------|------------------------|--------------| +| 17 | [5.6.1+](/pgd/latest/) | | +| 16 | [5.3+](/pgd/latest/) | | +| 15 | [5](/pgd/latest/) | | +| 14 | [5](/pgd/latest/) | [4](/pgd/4/) | +| 13 | [5](/pgd/latest/) | [4](/pgd/4/) | +| 12 | [5](/pgd/latest/) | [4](/pgd/4/) | + +## PGD compatibility with operating systems and architectures + +The following tables show the versions of EDB Postgres Distributed and their compatibility with various operating systems and architectures. + +### Linux x86_64 (amd64) + +| Operating System | PGD 5 | PGD 4 | +|------------------------------------|-------|-------| +| RHEL 8/9 | Yes | Yes | +| Oracle Linux 8/9 | Yes | Yes | +| Rocky Linux/AlmaLinux | Yes | Yes | +| SUSE Linux Enterprise Server 15SP5 | Yes | Yes | +| Ubuntu 20.04/22.04/24.04 | Yes | Yes | +| Debian 11/12 | Yes | Yes | + +### Linux ppc64le + +| Operating System | PGD 5 | PGD 4 | +|------------------|-------|-------| +| RHEL 8/9 | Yes | No | + + +### Linux arm64/aarch64 + +| Operating System | PGD 5¹ | PGD 4 | +|------------------|-------|-------| +| Debian 12 | Yes | No | +| RHEL 9² | Yes | No | + +¹ From PGD 5.6.1 onwards + +² Postgres 12 is not supported on RHEL 9 on arm64/aarch64 + diff --git a/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx b/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx index 36263c80a82..1e99c4a5f61 100644 --- a/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx +++ b/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx @@ -31,16 +31,22 @@ To resolve this conflict type, you can also use column-level conflict resolution You can effectively eliminate this type of conflict by using [global sequences](../../sequences/#pgd-global-sequences). -### INSERT operations that violate multiple UNIQUE constraints +### INSERT operations that violate UNIQUE or EXCLUDE constraints -An `INSERT`/`INSERT` conflict can violate more than one `UNIQUE` constraint, of which one might be the `PRIMARY KEY`. If a new row violates more than one `UNIQUE` constraint and that results in a conflict against more than one other row, then applying the replication change produces a `multiple_unique_conflicts` conflict. +An `INSERT`/`INSERT` conflict can violate more than one `UNIQUE` constraint, of which one might be the `PRIMARY KEY`. +With the addition of `EXCLUDE` constraint support in PGD 5.6, an `INSERT`/`INSERT`conflict can also violate one or more `EXCLUDE` constraints. -In case of such a conflict, you must remove some rows for replication to continue. Depending on the resolver setting for `multiple_unique_conflicts`, the apply process either exits with error, skips the incoming row, or deletes some of the rows. The deletion tries to preserve the row with the correct `PRIMARY KEY` and delete the others. +If a new row violates more than one `UNIQUE` constraint and that results in a conflict against more than one other row, or a new row violates more than one `EXCLUDE` constraint or a single `EXCLUDE` constraint, either of which results in a conflict against more than one other row, then applying the replication change produces a `multiple_unique_conflicts` conflict. + +In case of such a conflict, you must remove some rows for replication to continue. +Depending on the resolver setting for `multiple_unique_conflicts`, the apply process either exits with error, skips the incoming row, or deletes some of the rows. +The deletion tries to preserve the row with the correct `PRIMARY KEY` and delete the others. !!! Warning - In case of multiple rows conflicting this way, if the result of conflict resolution is to proceed with the insert operation, some of the data is always deleted. +In case of multiple rows conflicting this way, if the result of conflict resolution is to proceed with the insert operation, some of the data is always deleted. +!!! -You can also define a different behavior using a conflict trigger. +You can also define a different behavior using a [conflict trigger](/pgd/latest/striggers/#conflict-triggers). ### UPDATE/UPDATE conflicts @@ -165,9 +171,9 @@ changes, make those changes using Eager Replication. !!! Warning In case the conflict resolution of `update_pkey_exists` conflict results in update, one of the rows is always deleted. -### UPDATE operations that violate multiple UNIQUE constraints +### UPDATE operations that violate UNIQUE or EXCLUDE constraints -Like [INSERT operations that violate multiple UNIQUE constraints](#insert-operations-that-violate-multiple-unique-constraints), when an incoming `UPDATE` violates more than one `UNIQUE` index (or the `PRIMARY KEY`), PGD raises a `multiple_unique_conflicts` conflict. +Like [INSERT operations that violate multiple UNIQUE/EXLUDE constraints](#insert-operations-that-violate-unique-or-exclude-constraints), when an incoming `UPDATE` violates more than one `UNIQUE`/`EXCLUDE index (including the `PRIMARY KEY`) or violates a single `EXCLUDE` index such that more than one row is in conflict, PGD raises a `multiple_unique_conflicts` conflict. PGD supports deferred unique constraints. If a transaction can commit on the source, then it applies cleanly on target, unless it sees conflicts. However, you can't use a deferred primary key as a REPLICA IDENTITY, so the use cases are already limited by that and the warning about using multiple unique constraints. diff --git a/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx b/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx index fad0aa6f068..9fdf01482ac 100644 --- a/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx +++ b/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx @@ -118,7 +118,7 @@ under the following table. | CREATE STATISTICS | Y | Y | DDL | | CREATE SUBSCRIPTION | Y | Y | DDL | | CREATE SYNONYM | Y | Y | DDL | -| CREATE TABLE | [Details](#bdr_ddl_allowed_CreateStmt) | Y | DDL | +| CREATE TABLE | Y | Y | DDL | | CREATE TABLE AS | [Details](#bdr_ddl_allowed_CreateTableAsStmt) | Y | DDL | | CREATE TABLESPACE | Y | N | N | | CREATE TEXT SEARCH CONFIGURATION | Y | Y | DDL | @@ -253,10 +253,12 @@ Some variants of `ALTER TABLE` currently aren't allowed on a PGD node: - `ADD COLUMN ... DEFAULT (non-immutable expression)` — This is not allowed because it currently results in different data on different nodes. See [Adding a column](ddl-workarounds/#adding-a-column) for a suggested workaround. -- `ALTER TABLE ... SET WITH[OUT] OIDS` — Isn't supported for the same reasons - as in `CREATE TABLE`. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `ALTER COLUMN ... SET STORAGE external` — Is rejected if the column is one of the columns of the replica identity for the table. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `RENAME` — Can't rename an Autopartitioned table. - `SET SCHEMA` — Can't set the schema of an Autopartitioned table. - `ALTER COLUMN ... TYPE` — Changing a column's type isn't supported if the @@ -272,6 +274,8 @@ Some variants of `ALTER TABLE` currently aren't allowed on a PGD node: AccessExclusiveLock for extended periods on larger tables, so such commands are likely to be infeasible on highly available databases in any case. See [Changing a column's type](ddl-workarounds/#changing-a-columns-type) for a suggested workaround. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `ALTER TABLE ... ADD FOREIGN KEY` — Isn't supported if current user doesn't have permission to read the referenced table or if the referenced table has RLS restrictions enabled that the current user can't bypass. @@ -500,13 +504,6 @@ break the replication due to the `writer` worker throwing the error: `cannot cha Generally `CREATE SEQUENCE` is supported, but when using global sequences, some options have no effect. -
- -### CREATE TABLE - -Generally `CREATE TABLE` is supported, but `CREATE TABLE WITH OIDS` isn't -allowed on a PGD node. -
### CREATE TABLE AS and SELECT INTO diff --git a/product_docs/docs/pgd/5.6/decoding_worker.mdx b/product_docs/docs/pgd/5.6/decoding_worker.mdx index fa7343354a8..65f934e5972 100644 --- a/product_docs/docs/pgd/5.6/decoding_worker.mdx +++ b/product_docs/docs/pgd/5.6/decoding_worker.mdx @@ -1,5 +1,6 @@ --- title: Decoding worker +description: Decoding worker in PGD reduces CPU overhead and increases replication throughput by enabling a optimized decoding worker process. --- PGD provides an option to enable a decoding worker process that performs diff --git a/product_docs/docs/pgd/5.6/index.mdx b/product_docs/docs/pgd/5.6/index.mdx index 5c3d524b39b..63d4b6b1c99 100644 --- a/product_docs/docs/pgd/5.6/index.mdx +++ b/product_docs/docs/pgd/5.6/index.mdx @@ -8,6 +8,7 @@ redirects: navigation: - rel_notes - known_issues + - compatibility - "#Concepts" - terminology - overview @@ -45,7 +46,6 @@ navigation: - tssnapshots - "#Reference" - reference - - compatibility --- @@ -74,17 +74,7 @@ the peer nodes only after the local commit. You can configure additional levels ## Compatibility -EDB Postgres Distributed 5 is compatible with the package versions shown in the table. - - Package | Versions --------- | ------------ -Community PostgreSQL | 12-16 -EDB Postgres Extended Server | 12-16 -EDB Postgres Advanced Server | 12-16 - -!!! Note Postgres 16 support -Postgres 16 support is available only in EDB Postgres Distributed 5.3 and later. -!!! - +EDB Postgres Distributed 5 is compatible with PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced versions 12-17. See the [compatibility](compatibility) section for more details, including compatibility with different operating systems and architectures. For feature compatibility with compatible servers, see [Choosing a Postgres distribution](planning/choosing_server). +--- diff --git a/product_docs/docs/pgd/5.6/known_issues.mdx b/product_docs/docs/pgd/5.6/known_issues.mdx index a6aad74ae7b..2d61b8aa3dc 100644 --- a/product_docs/docs/pgd/5.6/known_issues.mdx +++ b/product_docs/docs/pgd/5.6/known_issues.mdx @@ -49,7 +49,8 @@ Edit the [`pgd-cli-config.yml`](cli/configuring_cli/#using-a-configuration-file) To modify a commit scope safely, use [`bdr.alter_commit_scope`](/pgd/latest/reference/functions#bdralter_commit_scope). -- Tables configured with `REPLICA IDENTITY FULL` and include `box`, `polygon` or `json` types in their columns are using PGD aren't able to be replicated. -You can mitigate this issue by configuring a primary key for `REPLICA IDENTITY` to use or, for `json` columns only, using the `jsonb` type instead. +- DDL run in serializable transactions can face the error: `ERROR: could not serialize access due to read/write dependencies among transactions`. A workaround is to run the DDL outside serializable transactions. + +- The EPAS 17 data type [`BFILE`](/epas/latest/reference/sql_reference/02_data_types/03a_bfiles/) is not currently supported. This is due to `BFILE` being a file reference that is stored in the database, and the file itself is stored outside the database and not replicated. Details of other design or implementation [limitations](planning/limitations) are also available. diff --git a/product_docs/docs/pgd/5.6/overview/index.mdx b/product_docs/docs/pgd/5.6/overview/index.mdx index 190e12f9b55..d4bb1924ac1 100644 --- a/product_docs/docs/pgd/5.6/overview/index.mdx +++ b/product_docs/docs/pgd/5.6/overview/index.mdx @@ -100,7 +100,7 @@ In the future, one node will be elected as the main replicator to other groups, ### Supported Postgres database servers -PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. +PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](/pge/latest), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. Some key PGD features depend on certain core capabilities being available in the target Postgres database server. Therefore, PGD users must also adopt the Postgres database server distribution that's best suited to their business needs. For example, if having the PGD feature Commit At Most Once (CAMO) is mission critical to your use case, don't adopt the community PostgreSQL distribution. It doesn't have the core capability required to handle CAMO. See the full feature matrix compatibility in [Choosing a Postgres distribution](../planning/choosing_server/). diff --git a/product_docs/docs/pgd/5.6/reference/autopartition.mdx b/product_docs/docs/pgd/5.6/reference/autopartition.mdx index 7705414f356..40d34ca1efc 100644 --- a/product_docs/docs/pgd/5.6/reference/autopartition.mdx +++ b/product_docs/docs/pgd/5.6/reference/autopartition.mdx @@ -22,8 +22,9 @@ bdr.autopartition(relation regclass, minimum_advance_partitions integer DEFAULT 2, maximum_advance_partitions integer DEFAULT 5, data_retention_period interval DEFAULT NULL, - managed_locally boolean DEFAULT false, - enabled boolean DEFAULT on); + managed_locally boolean DEFAULT true, + enabled boolean DEFAULT on, + analytics_offload_period); ``` #### Parameters @@ -40,8 +41,9 @@ bdr.autopartition(relation regclass, go after the number of advance partitions falls below `minimum_advance_partitions`. - `data_retention_period` — Interval until older partitions are dropped, if defined. This value must be greater than `migrate_after_period`. -- `managed_locally` — If true, then the partitions are managed locally. +- `managed_locally` — Whether partitions are managed locally. Setting this to `false` is not recommended. - `enabled` — Allows activity to be disabled or paused and later resumed or reenabled. +- `analytics_offload_period` — Provides support for partition offloading. Reserved for future use. #### Examples diff --git a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx index 1c2c7378946..1dfcedd54a9 100644 --- a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx +++ b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx @@ -42,7 +42,7 @@ commit_scope_kind: { GROUP COMMIT [ ( group_commit_parameter = value [, ... ] ) ] [ ABORT ON ( abort_on_parameter = value ) ] [ DEGRADE ON (degrade_on_parameter = value [, ... ] ) TO commit_scope_degrade_operation ] | CAMO [ DEGRADE ON ( degrade_on_parameter = value [, ... ] ) TO ASYNC ] | LAG CONTROL [ ( lag_control_parameter = value [, ... ] ) ] - | SYNCHRONOUS_COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] } + | SYNCHRONOUS COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] } commit_scope_degrade_operation: commit_scope_group confirmation_level commit_scope_kind @@ -55,12 +55,12 @@ Where `node_group` is the name of a PGD data node group. The `commit_scope_degrade_operation` is either the same commit scope kind with a less restrictive commit scope group as the overall rule being defined, or is asynchronous (`ASYNC`). -For instance, [you can degrade](/pgd/latest/commit-scopes/degrading/) from an `ALL SYNCHRONOUS_COMMIT` to a `MAJORITY SYNCHRONOUS_COMMIT` or a `MAJORITY SYNCHRONOUS_COMMIT` to an `ANY 3 SYNCHRONOUS_COMMIT` or even an `ANY 3 SYNCHRONOUS_COMMIT` to an `ANY 2 SYNCHRONOUS_COMMIT`. You can also degrade from `SYNCRHONOUS_COMMIT` to `ASYNC`. However, you cannot degrade from `SYNCHRONOUS_COMMIT` to `GROUP_COMMIT` or the other way around, regardless of the commit scope groups involved. +For instance, [you can degrade](/pgd/latest/commit-scopes/degrading/) from an `ALL SYNCHRONOUS COMMIT` to a `MAJORITY SYNCHRONOUS COMMIT` or a `MAJORITY SYNCHRONOUS COMMIT` to an `ANY 3 SYNCHRONOUS COMMIT` or even an `ANY 3 SYNCHRONOUS COMMIT` to an `ANY 2 SYNCHRONOUS COMMIT`. You can also degrade from `SYNCHRONOUS COMMIT` to `ASYNC`. However, you cannot degrade from `SYNCHRONOUS COMMIT` to `GROUP COMMIT` or the other way around, regardless of the commit scope groups involved. It is also possible to combine rules using `AND`, each with their own degradation clause: ``` -ALL ORIGIN_GROUP SYNCHRONOUS_COMMIT DEGRADE ON (timeout = 10s) TO MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT AND ANY 1 NOT ORIGIN_GROUP SYNCHRONOUS_COMMIT DEGRADE ON (timeout = 20s) TO ASYNC +ALL ORIGIN_GROUP SYNCHRONOUS COMMIT DEGRADE ON (timeout = 10s) TO MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT AND ANY 1 NOT ORIGIN_GROUP SYNCHRONOUS COMMIT DEGRADE ON (timeout = 20s) TO ASYNC ``` ## Commit scope targets @@ -73,7 +73,7 @@ Instead of targeting a specific group, you can also use `ORIGIN_GROUP`, which dy SELECT bdr.create_commit_scope( commit_scope_name := 'example_scope', origin_node_group := 'top_level_group', - rule := 'MAJORITY ORIGIN_GROUP SYNCHRONOUS_COMMIT', + rule := 'MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT', wait_for_ready := true ); ``` @@ -144,7 +144,7 @@ This is the default visibility. A transaction is confirmed after all of its chan More details of the commit scope kinds and details of their parameters: -- [Synchronous Commit](#synchronous_commit) +- [Synchronous Commit](#synchronous-commit) - [Group Commit](#group-commit) - [CAMO (Commit At Most Once)](#camo) - [Lag Control](#lag-control) @@ -155,10 +155,10 @@ More details of the commit scope kinds and details of their parameters: Specify Boolean, enum, int, and interval values using the [Postgres GUC parameter value conventions](https://www.postgresql.org/docs/current/config-setting.html#CONFIG-SETTING-NAMES-VALUES). !!! -## SYNCHRONOUS_COMMIT +## SYNCHRONOUS COMMIT ``` -SYNCHRONOUS_COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] +SYNCHRONOUS COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] ``` ### DEGRADE ON parameters @@ -172,11 +172,11 @@ These set the conditions on which the commit scope rule will degrade to a less r ### commit_scope_degrade_operation -The `commit_scope_degrade_operation` must be `SYNCHRONOUS_COMMIT` with a less restrictive commit scope group—or must be asynchronous (`ASYNC`). +The `commit_scope_degrade_operation` must be `SYNCHRONOUS COMMIT` with a less restrictive commit scope group—or must be asynchronous (`ASYNC`). ## GROUP COMMIT -Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS_COMMIT`](#synchronous_commit), has optional rule-degredation parameters. +Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS COMMIT`](#synchronous-commit), has optional rule-degredation parameters. ``` GROUP COMMIT [ ( group_commit_parameter = value [, ...] ) ] [ ABORT ON ( abort_on_parameter = value ) ] [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] diff --git a/product_docs/docs/pgd/5.6/reference/conflicts.mdx b/product_docs/docs/pgd/5.6/reference/conflicts.mdx index 998328da90c..1f7abd45414 100644 --- a/product_docs/docs/pgd/5.6/reference/conflicts.mdx +++ b/product_docs/docs/pgd/5.6/reference/conflicts.mdx @@ -18,7 +18,7 @@ PGD recognizes the following conflict types, which can be used as the `conflict_ | `update_missing` | An incoming update is trying to modify a row that doesn't exist. | | `update_recently_deleted` | An incoming update is trying to modify a row that was recently deleted. | | `update_pkey_exists` | An incoming update has modified the `PRIMARY KEY` to a value that already exists on the node that's applying the change. | -| `multiple_unique_conflicts` | The incoming row conflicts with multiple UNIQUE constraints/indexes in the target table. | +| `multiple_unique_conflicts`| An incoming row conflicts with multiple rows per UNIQUE/EXCLUDE indexes of the target table. | | `delete_recently_updated` | An incoming delete with an older commit timestamp than the most recent update of the row on the current node or when using [row version conflict detection](../conflict-management/conflicts/03_conflict_detection/#row-version-conflict-detection). | | `delete_missing` | An incoming delete is trying to remove a row that doesn't exist. | | `target_column_missing` | The target table is missing one or more columns present in the incoming row. | diff --git a/product_docs/docs/pgd/5.6/reference/functions.mdx b/product_docs/docs/pgd/5.6/reference/functions.mdx index c7ff9881a58..a4dc42e6251 100644 --- a/product_docs/docs/pgd/5.6/reference/functions.mdx +++ b/product_docs/docs/pgd/5.6/reference/functions.mdx @@ -268,11 +268,10 @@ group. ### `bdr.wait_slot_confirm_lsn` -Allows you to wait until the last write on this session was replayed -to one or all nodes. +Allows you to wait until the last write on this session was replayed to one or all nodes. -Waits until a slot passes a certain LSN. If no position is supplied, the -current write position is used on the local node. +Waits until a slot passes a certain LSN. +If no position is supplied, the current write position is used on the local node. If no slot name is passed, it waits until all PGD slots pass the LSN. @@ -282,17 +281,60 @@ If a slot is dropped concurrently, the wait ends for that slot. If a node is currently down and isn't updating its slot, then the wait continues. You might want to set `statement_timeout` to complete earlier in that case. +If you are using [Optimized Topology](../nodes/subscriber_only/optimizing-so), we recommend using [`bdr.wait_node_confirm_lsn`](/pgd/5.6/reference/functions#bdrwait_node_confirm_lsn) instead. +) + #### Synopsis ```sql bdr.wait_slot_confirm_lsn(slot_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT NULL) ``` +#### Notes + +Requires `bdr_application` privileges to use. + +#### Parameters + +| Parameter | Description | +|--------------|-----------------------------------------------------------------------------| +| `slot_name` | Name of the replication slot to wait for. If NULL, waits for all PGD slots. | +| `target_lsn` | LSN to wait for. If NULL, uses the current write LSN on the local node. | + +### `bdr.wait_node_confirm_lsn` + +Wait until a node passes a certain LSN. + +This function allows you to wait until the last write on this session was replayed to one or all nodes. + +Upon being called, the function waits for a node to pass a certain LSN. +If no LSN is supplied, the current wal_flush_lsn (using the `pg_current_wal_flush_lsn()` function) position is used on the local node. +Supplying a node name parameter tells the function to wait for that node to pass the LSN. +If no node name is supplied (by passing NULL), the function waits until all the nodes pass the LSN, + +We recommend using this function if you are using [Optimized Topology](../nodes/subscriber_only/optimizing-so) instead of [`bdr.wait_slot_confirm_lsn`](/pgd/5.6/reference/functions#bdrwait_slot_confirm_lsn). + +This is because in an Optimized Topology, not all nodes have replication slots, so the function `bdr.wait_slot_confirm_lsn` might not work as expected. `bdr.wait_node_confirm_lsn` is designed to work with nodes that don't have replication slots, using alternative straegies to determine the progress of a node. + +If a node is currently down, isn't updating or is simply not able to be connected to, the wait will continue indefinately. To avoid this, set the statement_timeout to the maximum amount of time you are prepared to wait. + +#### Synopsis + +```sql +bdr.wait_node_confirm_lsn(node_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT NULL) +``` + #### Parameters -- `slot_name` — Name of replication slot or, if NULL, all PGD slots (only). -- `target_lsn` — LSN to wait for or, if NULL, use the current write LSN on the - local node. +| Parameter | Description | +|--------------|-----------------------------------------------------------------------------| +| `node_name` | Name of the node to wait for. If NULL, waits for all nodes. | +| `target_lsn` | LSN to wait for. If NULL, uses the current wal_flush_lsn on the local node. | + +#### Notes + +Requires `bdr_application` privileges to use. + ### `bdr.wait_for_apply_queue` @@ -327,12 +369,10 @@ bdr.wait_for_apply_queue(peer_node_name TEXT, target_lsn pg_lsn) #### Parameters -- `peer_node_name` — The name of the peer node from which incoming - transactions are expected to be queued and to wait - for. If NULL, waits for all peer node's apply queue to be consumed. -- `target_lsn` — The LSN in the replication stream from the peer node - to wait for, usually learned by way of `bdr.last_committed_lsn` from the - peer node. +| Parameter | Description | +| --------- | ----------- | +| `peer_node_name` | The name of the peer node from which incoming transactions are expected to be queued and to wait for. If NULL, waits for all peer node's apply queue to be consumed. | +| `target_lsn` | The LSN in the replication stream from the peer node to wait for, usually learned by way of `bdr.last_committed_lsn` from the peer node. | ### `bdr.get_node_sub_receive_lsn` @@ -352,12 +392,10 @@ bdr.get_node_sub_receive_lsn(node_name name, committed bool default true) #### Parameters -- `node_name` — The name of the node that's the source of the - replication stream whose LSN is being retrieved. -- `committed` —; The default (true) makes this function take into - account only commits of transactions received rather than the last - LSN overall. This includes actions that have no effect on the subscriber - node. +| Parameter | Description | +| --------- | ----------- | +| `node_name` | The name of the node that's the source of the replication stream whose LSN is being retrieved. | +| `committed` | The default (true) makes this function take into account only commits of transactions received rather than the last LSN overall. This includes actions that have no effect on the subscriber node. | ### `bdr.get_node_sub_apply_lsn` @@ -372,8 +410,9 @@ bdr.get_node_sub_apply_lsn(node_name name) #### Parameters -- `node_name` — the name of the node that's the source of the - replication stream whose LSN is being retrieved. +| Parameter | Description | +| --------- | ----------- | +| `node_name` | The name of the node that's the source of the replication stream whose LSN is being retrieved. | ### `bdr.replicate_ddl_command` @@ -390,10 +429,12 @@ bdr.replicate_ddl_command(ddl_cmd text, #### Parameters -- `ddl_cmd` — DDL command to execute. -- `replication_sets` — An array of replication set names to apply the `ddlcommand` to. If NULL (or the function is only passed the `ddlcommand`), this is set to the active PGD groups's default replication set. -- `ddl_locking` — A string that sets the [`bdr.ddl_locking`](/pgd/latest/reference/pgd-settings#bdrddl_locking) value while replicating. Defaults to the GUC value for `bdr.ddl_locking` on the local system that's running `replicate_ddl_command`. -- `execute_locally` — A Boolean that determines whether the DDL command executes locally. Defaults to true. +| Parameter | Description | +| --------- | ----------- | +| `ddl_cmd` | DDL command to execute. | +| `replication_sets` | An array of replication set names to apply the `ddlcommand` to. If NULL (or the function is only passed the `ddlcommand`), this is set to the active PGD groups's default replication set. | +| `ddl_locking` | A string that sets the [`bdr.ddl_locking`](/pgd/latest/reference/pgd-settings#bdrddl_locking) value while replicating. Defaults to the GUC value for `bdr.ddl_locking` on the local system that's running `replicate_ddl_command`. | +| `execute_locally` | A Boolean that determines whether the DDL command executes locally. Defaults to true. | #### Notes @@ -418,7 +459,9 @@ bdr.run_on_all_nodes(query text) #### Parameters -- `query` — Arbitrary query to execute. +| Parameter | Description | +|-----------|-----------------------------| +| `query` | Arbitrary query to execute. | #### Notes @@ -508,8 +551,10 @@ bdr.run_on_nodes(node_names text[], query text) #### Parameters -- `node_names` — Text ARRAY of node names where query is executed. -- `query` — Arbitrary query to execute. +| Parameter | Description | +|--------------|-------------------------------------------------------| +| `node_names` | Text ARRAY of node names where the query is executed. | +| `query` | Arbitrary query to execute. | #### Notes @@ -547,8 +592,10 @@ bdr.run_on_group(node_group_name text, query text) #### Parameters -- `node_group_name` — Name of node group where query is executed. -- `query` — Arbitrary query to execute. +| Parameter | Description | +|-----------|-------------------------------------------------------| +| `node_group_name` | Name of the node group where the query is executed. | +| `query` | Arbitrary query to execute. | #### Notes @@ -583,7 +630,9 @@ bdr.global_lock_table(relation regclass) #### Parameters -- `relation` — Name or oid of the relation to lock. +| Parameter | Description | +|------------|--------------------------------------| +| `relation` | Name or oid of the relation to lock. | #### Notes @@ -610,13 +659,11 @@ bdr.wait_for_xid_progress(origin_node_id oid, origin_topxid int4, allnodes boole #### Parameters -- `origin_node_id` — Node id of the node where the transaction - originated. - -- `origin_topxid` — XID of the transaction. - -- `allnodes` — If `true` then wait for the transaction to progress on - all nodes. Otherwise wait only for the current node. +| Parameter | Description | +|------------------|----------------------------------------------------------------------------------------------------------| +| `origin_node_id` | Node id of the node where the transaction originated. | +| `origin_topxid` | XID of the transaction. | +| `allnodes` | If `true`, wait for the transaction to progress on all nodes. Otherwise, wait only for the current node. | #### Notes @@ -671,8 +718,10 @@ bdr.alter_node_kind(node_name text, #### Parameters -- `node_name` — Name of the node to change kind. -- `node_kind` — Kind of the node, which can be one of: `data`, `standby`, `witness`, or `subscriber-only`. +| Parameter | Description | +|------------|--------------------------------------| +| `node_name` | Name of the node to change kind. | +| `node_kind` | Kind of the node. | ### `bdr.alter_subscription_skip_changes_upto` @@ -829,8 +878,10 @@ bdr.global_advisory_lock(key1 integer, key2 integer) #### Parameters -- `key1` — First part of the composite key. -- `key2` — second part of the composite key. +| Parameter | Description | +|-----------|-------------| +| `key1` | First part of the composite key. | +| `key2` | Second part of the composite key. | ### `bdr.global_advisory_unlock` @@ -846,7 +897,10 @@ bdr.global_advisory_unlock(key bigint) #### Parameters -- `key` — The object on which an advisory lock is acquired. +| Parameter | Description | +|-----------|---------------------------------------------------| +| `key` | The object on which an advisory lock is acquired. | + #### Synopsis @@ -856,8 +910,10 @@ bdr.global_advisory_unlock(key1 integer, key2 integer) #### Parameters -- `key1` — First part of the composite key. -- `key2` — Second part of the composite key. +| Parameter | Description | +|-----------|-----------------------------------| +| `key1` | First part of the composite key. | +| `key2` | Second part of the composite key. | ## Monitoring functions @@ -894,8 +950,9 @@ bdr.monitor_group_raft() #### Parameters -- `node_group_name` — The node group name to check. - +| Parameter | Description | +|-------------------|-------------------------------| +| `node_group_name` | The node group name to check. | #### Notes @@ -947,13 +1004,12 @@ bdr.wal_sender_stats() #### Output columns -- `pid` — PID of the WAL sender (corresponds to the `pid` column of `pg_stat_replication`). - -- `is_using_lcr` — Whether the WAL sender is sending LCR files. The next columns are `NULL` if `is_using_lcr` is `FALSE`. - -- `decoder_slot_name` — The name of the decoder replication slot. - -- `lcr_file_name` — The name of the current LCR file. +| Column name | Description | +|---------------------|-------------------------------------------------------------------------------------| +| `pid` | PID of the WAL sender. (corresponds to the `pid` column of `pg_stat_replication`). | +| `is_using_lcr` | Whether the WAL sender is sending LCR files. | +| `decoder_slot_name` | Name of the decoder replication slot. | +| `lcr_file_name` | Name of the current LCR file. | ### `bdr.get_decoding_worker_stat` @@ -971,13 +1027,12 @@ bdr.get_decoding_worker_stat() #### Output columns -- `pid` — The PID of the decoding worker (corresponds to the column `active_pid` in `pg_replication_slots`). - -- `decoded_upto_lsn` — LSN up to which the decoding worker read transactional logs. - -- `waiting` — Whether the decoding worker is waiting for new WAL. - -- `waiting_for_lsn` — The LSN of the next expected WAL. +| Column name | Description | +|-------------|-------------| +| `pid` | The PID of the decoding worker (corresponds to the column `active_pid` in `pg_replication_slots`). | +| `decoded_upto_lsn` | LSN up to which the decoding worker read transactional logs. | +| `waiting` | Whether the decoding worker is waiting for new WAL. | +| `waiting_for_lsn` | The LSN of the next expected WAL. | #### Notes @@ -997,32 +1052,21 @@ bdr.lag_control() #### Output columns -- `commit_scope_id` — OID of the commit scope (see [`bdr.commit_scopes`](/pgd/latest/reference/catalogs-visible#bdrcommit_scopes))). - -- `sessions` — Number of sessions referencing the lag control entry. - -- `current_commit_delay` — Current runtime commit delay, in fractional milliseconds. - -- `maximum_commit_delay` — Configured maximum commit delay, in fractional milliseconds. - -- `commit_delay_adjust` — Change to runtime commit delay possible during - a sample interval, in fractional milliseconds. - -- `curent_conforming_nodes` — Current runtime number of nodes conforming to lag measures. - -- `minimum_conforming_nodes` — Configured minimum number of nodes required to - conform to lag measures, below which a commit delay adjustment is applied. - -- `lag_bytes_threshold` — Lag size at which a commit delay is applied, in kilobytes. - -- `maximum_lag_bytes` — Configured maximum lag size, in kilobytes. - -- `lag_time_threshold` — Lag time at which a commit delay is applied, in milliseconds. - -- `maximum_lag_time` — Configured maximum lag time, in milliseconds. +| Column name | Description | +|----------------------------|---------------------------------------------------------------------------------------------------------------------------| +| `commit_scope_id` | OID of the commit scope (see [`bdr.commit_scopes`](/pgd/latest/reference/catalogs-visible#bdrcommit_scopes)). | +| `sessions` | Number of sessions referencing the lag control entry. | +| `current_commit_delay` | Current runtime commit delay, in fractional milliseconds. | +| `maximum_commit_delay` | Configured maximum commit delay, in fractional milliseconds. | +| `commit_delay_adjust` | Change to runtime commit delay possible during a sample interval, in fractional milliseconds. | +| `current_conforming_nodes` | Current runtime number of nodes conforming to lag measures. | +| `minimum_conforming_nodes` | Configured minimum number of nodes required to conform to lag measures, below which a commit delay adjustment is applied. | +| `lag_bytes_threshold` | Lag size at which a commit delay is applied, in kilobytes. | +| `maximum_lag_bytes` | Configured maximum lag size, in kilobytes. | +| `lag_time_threshold` | Lag time at which a commit delay is applied, in milliseconds. | +| `maximum_lag_time` | Configured maximum lag time, in milliseconds. | +| `sample_interval` | Configured minimum time between lag samples and possible commit delay adjustments, in milliseconds. | -- `sample_interval` — Configured minimum time between lag samples and possible - commit delay adjustments, in milliseconds. ## CAMO functions @@ -1103,9 +1147,11 @@ bdr.logical_transaction_status(node_id OID, xid OID, #### Parameters -- `node_id` — The node id of the PGD node the transaction originates from, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `bdr.local_node_id`. -- `xid` — The transaction id on the origin node, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `transaction_id`. -- `require_camo_partner` — Defaults to true and enables configuration checks. Set to false to disable these checks and query the status of a transaction that wasn't a CAMO transaction. +| Parameter | Description | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `node_id` | The node id of the PGD node the transaction originates from, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `bdr.local_node_id`. | +| `xid` | The transaction id on the origin node, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `transaction_id`. | +| `require_camo_partner` | Defaults to true and enables configuration checks. Set to false to disable these checks and query the status of a transaction that wasn't a CAMO transaction. | #### Return value diff --git a/product_docs/docs/pgd/5.6/reference/index.json b/product_docs/docs/pgd/5.6/reference/index.json index bef1d9c6d28..aecf10565b2 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -87,6 +87,7 @@ "bdrget_raft_status": "/pgd/5.6/reference/functions#bdrget_raft_status", "bdrraft_leadership_transfer": "/pgd/5.6/reference/functions#bdrraft_leadership_transfer", "bdrwait_slot_confirm_lsn": "/pgd/5.6/reference/functions#bdrwait_slot_confirm_lsn", + "bdrwait_node_confirm_lsn": "/pgd/5.6/reference/functions#bdrwait_node_confirm_lsn", "bdrwait_for_apply_queue": "/pgd/5.6/reference/functions#bdrwait_for_apply_queue", "bdrget_node_sub_receive_lsn": "/pgd/5.6/reference/functions#bdrget_node_sub_receive_lsn", "bdrget_node_sub_apply_lsn": "/pgd/5.6/reference/functions#bdrget_node_sub_apply_lsn", @@ -187,6 +188,7 @@ "list-of-node-states": "/pgd/5.6/reference/nodes#list-of-node-states", "node-management-commands": "/pgd/5.6/reference/nodes#node-management-commands", "bdr_init_physical": "/pgd/5.6/reference/nodes#bdr_init_physical", + "bdr_config": "/pgd/5.6/reference/nodes#bdr_config", "bdralter_node_group_option": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_group_option", "bdralter_node_interface": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_interface", "bdralter_node_option": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_option", @@ -222,7 +224,7 @@ "cs.on-durable": "/pgd/5.6/reference/commit-scopes#on-durable", "cs.on-visible": "/pgd/5.6/reference/commit-scopes#on-visible", "cs.commit-scope-kinds": "/pgd/5.6/reference/commit-scopes#commit-scope-kinds", - "cs.synchronous_commit": "/pgd/5.6/reference/commit-scopes#synchronous_commit", + "cs.synchronous-commit": "/pgd/5.6/reference/commit-scopes#synchronous-commit", "cs.degrade-on-parameters": "/pgd/5.6/reference/commit-scopes#degrade-on-parameters", "cs.group-commit": "/pgd/5.6/reference/commit-scopes#group-commit", "cs.group-commit-parameters": "/pgd/5.6/reference/commit-scopes#group-commit-parameters", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index a35a63d0a51..fd221b4083b 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -130,6 +130,7 @@ The reference section is a definitive listing of all functions, views, and comma * [`bdr.raft_leadership_transfer`](functions#bdrraft_leadership_transfer) ### [Utility functions](functions#utility-functions) * [`bdr.wait_slot_confirm_lsn`](functions#bdrwait_slot_confirm_lsn) + * [`bdr.wait_node_confirm_lsn`](functions#bdrwait_node_confirm_lsn) * [`bdr.wait_for_apply_queue`](functions#bdrwait_for_apply_queue) * [`bdr.get_node_sub_receive_lsn`](functions#bdrget_node_sub_receive_lsn) * [`bdr.get_node_sub_apply_lsn`](functions#bdrget_node_sub_apply_lsn) @@ -261,6 +262,7 @@ The reference section is a definitive listing of all functions, views, and comma * [List of node states](nodes#list-of-node-states) * [Node-management commands](nodes#node-management-commands) * [`bdr_init_physical`](nodes#bdr_init_physical) + * [`bdr_config`](nodes#bdr_config) ## [Node management interfaces](nodes-management-interfaces) @@ -305,7 +307,7 @@ The reference section is a definitive listing of all functions, views, and comma * [ON durable](commit-scopes#on-durable) * [ON visible](commit-scopes#on-visible) * [Commit Scope kinds](commit-scopes#commit-scope-kinds) - * [SYNCHRONOUS_COMMIT](commit-scopes#synchronous_commit) + * [SYNCHRONOUS COMMIT](commit-scopes#synchronous-commit) * [DEGRADE ON parameters](commit-scopes#degrade-on-parameters) * [commit_scope_degrade_operation](commit-scopes#commit_scope_degrade_operation) * [GROUP COMMIT](commit-scopes#group-commit) diff --git a/product_docs/docs/pgd/5.6/reference/nodes.mdx b/product_docs/docs/pgd/5.6/reference/nodes.mdx index 6b2de33e78c..f54de4cd385 100644 --- a/product_docs/docs/pgd/5.6/reference/nodes.mdx +++ b/product_docs/docs/pgd/5.6/reference/nodes.mdx @@ -2,38 +2,27 @@ navTitle: Node management title: Node management indexdepth: 3 +deepToC: true --- ## List of node states -- `NONE`: Node state is unset when the worker starts, expected to be set quickly - to the current known state. -- `CREATED`: `bdr.create_node()` was executed, but the node isn't a - member of any EDB Postgres Distributed cluster yet. -- `JOIN_START`: `bdr.join_node_group()` begins to join the local node to an - existing EDB Postgres Distributed cluster. -- `JOINING`: The node join has started and is currently at the initial sync phase, - creating the schema and data on the node. -- `CATCHUP`: Initial sync phase is completed. Now the join is at the last step - of retrieving and applying transactions that were performed on the upstream - peer node since the join started. -- `STANDBY`: Node join finished but hasn't yet started to broadcast changes. - All joins spend some time in this state, but if defined as a logical standby, - the node continues in this state. -- `PROMOTE`: Node was a logical standby and `bdr.promote_node` was just called to - move the node state to `ACTIVE`. These two `PROMOTE`states have to be coherent - to the fact that only one node can be with a state higher than `STANDBY` but - lower than `ACTIVE`. -- `PROMOTING`: Promotion from logical standby to full PGD node is in progress. -- `ACTIVE`: The node is a full PGD node and is currently `ACTIVE`. This is the - most common node status. -- `PART_START`: Node was `ACTIVE` or `STANDBY` and `bdr.part_node` was just called - to remove the node from the EDB Postgres Distributed cluster. -- `PARTING`: Node disconnects from other nodes and plays no further part in - consensus or replication. -- `PART_CATCHUP`: Nonparting nodes synchronize any missing data from the - recently parted node. -- `PARTED`: Node parting operation is now complete on all nodes. +| State | Description | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `NONE` | Node state is unset when the worker starts, expected to be set quickly to the current known state. | +| `CREATED` | `bdr.create_node()` was executed, but the node isn't a member of any EDB Postgres Distributed cluster yet. | +| `JOIN_START` | `bdr.join_node_group()` begins to join the local node to an existing EDB Postgres Distributed cluster. | +| `JOINING` | The node join has started and is currently at the initial sync phase, creating the schema and data on the node. | +| `CATCHUP` | Initial sync phase is completed. Now the join is at the last step of retrieving and applying transactions that were performed on the upstream peer node since the join started. | +| `STANDBY` | Node join finished but hasn't yet started to broadcast changes. All joins spend some time in this state, but if defined as a logical standby, the node continues in this state. | +| `PROMOTE` | Node was a logical standby and `bdr.promote_node` was just called to move the node state to `ACTIVE`. These two `PROMOTE` states have to be coherent to the fact that only one node can be with a state higher than `STANDBY` but lower than `ACTIVE`. | +| `PROMOTING` | Promotion from logical standby to full PGD node is in progress. | +| `ACTIVE` | The node is a full PGD node and is currently `ACTIVE`. This is the most common node status. | +| `PART_START` | Node was `ACTIVE` or `STANDBY` and `bdr.part_node` was just called to remove the node from the EDB Postgres Distributed cluster. | +| `PARTING` | Node disconnects from other nodes and plays no further part in consensus or replication. | +| `PART_CATCHUP` | Nonparting nodes synchronize any missing data from the recently parted node. | +| `PARTED` | Node parting operation is now complete on all nodes. | + Only one node at a time can be in either of the states PROMOTE or PROMOTING. ## Node-management commands @@ -122,3 +111,60 @@ strongly recommend that you truncate the tables rather than drop them, because: It's simpler and safer to truncate your nonreplicated tables, leaving them present but empty. + +### `bdr_config` + +This command-line utility allows the user to examine the configuration of a PGD installation. +It is analogous to the `pg_config` utility that comes with PostgreSQL. It can be used to assist +in trouble-shooting and support. + +#### Synopsis + +```shell +bdr_config [OPTION] ... +``` + +#### Options + +| Option           | Description | +| --- | --- | +| `--all` | Show all the keys and values in the configuration. | +| `--version` | Show only the BDR version related keys and values. This include the full version of the BDR extension, the Postgres version and flavor it is running against and the BDRPG and BDR plugin API versions. | +| `--debug` | Show only the BDR debug keys and values, including build information and feature enablement. | + +#### Example + +```shell +$ /usr/lib/edb-as/16/bin/bdr_config --all +__OUTPUT__ +BDR_VERSION_COMPLETE=5.6.0 +BDR_VERSION_NUM=50600 +PG_VERSION=16.4.1 (Debian 16.4.1~~snapshot11329862135.2980.1.88fbec6-1.bookworm) +PG_VERSION_NUM=160004 +PG_FLAVOR=EPAS +BDRPG_API_VERSION_NUM=202309131 +BDR_PLUGIN_API_VERSION=7011 +USE_ASSERT_CHECKING=false +USE_VALGRIND=false +EXT_ENABLE_DTRACE=false +HAVE_LAG_CONTROL=true +HAVE_ASSESS_UPDATE_RI_HOOK=false +HAVE_BDRPG_PROBES=false +HAVE_CAMO=true +HAVE_DEADLOCK_DETECTOR_HOOK=true +HAVE_HEAP_UPDATE_HOOK=true +HAVE_LAG_TRACKER=true +HAVE_LCR=true +HAVE_LOG_TOAST_COLUMNS=false +HAVE_MISC_HOOKS=true +HAVE_MISSING_PARTITION_CONFLICT=true +HAVE_MULTI_PITR=false +HAVE_SELECTIVE_BASEBACKUP=false +HAVE_SNAPSHOT_TIMESTAMP=false +HAVE_STREAMING_XACTS=true +HAVE_SYNC_COMMIT_HOOK=true +HAVE_TWOPHASE_DATA_HOOKS=true +HAVE_XLOG_FIND_NEXT_RECORD=true +HAVE_DETACH_CONCURRENTLY=true +HAVE_ANALYTICS=true +``` diff --git a/product_docs/docs/pgd/5.6/rel_notes/index.mdx b/product_docs/docs/pgd/5.6/rel_notes/index.mdx index 8f59ccaf404..b2e64835755 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -3,6 +3,7 @@ title: EDB Postgres Distributed 5.6+ release notes navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later navigation: + - pgd_5.6.1_rel_notes - pgd_5.6.0_rel_notes --- @@ -12,4 +13,5 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P | Release Date | EDB Postgres Distributed | BDR extension | PGD CLI | PGD Proxy | |---|---|---|---|---| +| 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | | 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | diff --git a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx new file mode 100644 index 00000000000..7d5b4b340b4 --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx @@ -0,0 +1,91 @@ +--- +title: EDB Postgres Distributed 5.6.1 release notes +navTitle: Version 5.6.1 +--- + +Released: 25 November 2024 + +EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. + +## Highlights + +- Postgres 17 support +- ARM64 processor support + +## Features + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Added Postgres 17 support

Support for Postgres 17 has been added for all flavors (PostgreSQL, EDB Postgres Extended, +and EDB Postgres Advanced Server) starting with version 17.2.

+
BDR5.6.1
Added ARM64 processor Support

Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9.

+
+ + +## Enhancements + + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Added bdr.wait_node_confirm_lsn().

The function bdr.wait_node_confirm_lsn() has been introduced to wait until a specific node +reaches a designated Log Sequence Number (LSN). It first checks the confirmed_flush_lsn of +the replication slot for the specified node. If that information is not available, the function +connects to the node and queries pg_replication_origin_progress(), using the invoking node as +the origin. +If the nodename parameter is NULL, the function will wait for all nodes to reach the specified +LSN. If the target LSN is NULL, it will wait for the current wal_flush_lsn.

+
BDR5.6.1
Improvements made in SO Node Management and Progress Tracking.

An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in +progress updates. Improvements include enhanced watermark management for SO leaders in the Himesh +configuration, where write leaders now include watermarks in their updates. Watermarks are broadcasted +to simplify progress tracking on idle clusters. The peer progress mapping for SO nodes has been corrected, +and the tap test for group slot movement has been revised. +Additionally, the bdr_get_all_origins function now considers SO node origins.

+
BDR5.6.1
LSN Progress in Optimized Topology Configurations is now communicated.

While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized +topology configuration, the LSN progress of all data nodes is periodically communicated to these +subscriber-only nodes through logical replication.

+
BDR5.6.1
Some DDL commands are now allowed by bdr.permit_unsafe_commands when set.

The bdr.permit_unsafe_commands parameter now allows some DDL commands that were previously disallowed. Specifically ALTER COLUMN...TYPE...USING can now be permitted if the user knows the operation is safe.

+
+ + +## Bug Fixes + + + + + + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Addressed walsender crash that happend during configuration reload.

Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. +If this is not the case, MyPGLogicalWorker will be NULL, resulting in a segmentation fault +when the walsender attempts a configuration reload from the +pgl_wait_for_standby_confirmation() function.

+
42100
BDR5.6.1
Fixed unintended eager connection related to consensus connections among Subscriber Only group members

The msgbroker module used to establish consensus connections lazily, meaning that connections +were created only when the first message was sent to a specific destination. This method +negatively affected the latency of Raft leader elections. The behavior was modified to create +connections to consensus peers eagerly. However, this change resulted in an unintended +consequence: a fully meshed consensus network among subscriber-only nodes, which may conflict +with customer network designs. This patch keeps the eager connection setup but limits it to +voting nodes only, reverting to a lazy connection setup for non-voting nodes.

+
42041
BDR5.6.1
Fixed autopatition task scheduling.

To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks +that are prone to failure won't consistently impact the success of other tasks.

+
41998
BDR5.6.1
Fixed parting subscription with standbys.

The parting subscription used to hang, failing to wait for standbys when the +bdr.standby_slot_names parameter was defined.

+
41821
BDR5.6.1
Fixed parting SO node with multiple origins.

All relevant origins must be removed when parting SO node +With himesh, parting an SO node should result in removing all origins it +has, not just the one related to its SO group leader. +When parting a data node, even though there is no subscription to it +from SO node, the origin should be removed +DO not make SO node target of a part catchup subscription when himesh +enabled

+
BDR5.6.1
Stopped creation of slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

+
BDR5.6.1
Ensure no waiting for DEGRADE timeout when in an already degraded state.

When using commit scope with DEGRADE clause, if system detects that it's in degraded state, transactions should start in the DEGRADE mode. This ensures that the timeout is not applied on every commit.

+
PGD Proxy5.6.1
Fixed routing strategy for read nodes.

Corrected routing strategy for read nodes after a network partition.

+
+ + diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml new file mode 100644 index 00000000000..ddfd29bf032 --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -0,0 +1,184 @@ +product: EDB Postgres Distributed +version: 5.6.1 +date: 25 November 2024 +meta: + bdrextension: 5.6.1 + pgdcli: 5.6.1 + pgdproxy: 5.6.1 +intro: | + EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. +highlights: | + - Postgres 17 support + - ARM64 processor support +relnotes: +- relnote: Added Postgres 17 support + component: BDR + component_version: 5.6.1 + details: | + Support for Postgres 17 has been added for all flavors (PostgreSQL, EDB Postgres Extended, + and EDB Postgres Advanced Server) starting with version 17.2. + jira: BDR-5410 + addresses: "" + type: Feature + severity: High + impact: High +- relnote: Added ARM64 processor Support + component: BDR + component_version: 5.6.1 + details: | + Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9. + jira: BDR-5410 + addresses: "" + type: Feature + severity: High + impact: High +- relnote: Addressed walsender crash that happend during configuration reload. + component: BDR + component_version: 5.6.1 + details: | + Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. + If this is not the case, MyPGLogicalWorker will be NULL, resulting in a segmentation fault + when the walsender attempts a configuration reload from the + pgl_wait_for_standby_confirmation() function. + jira: BDR-5661 + addresses: "42100" + type: Bug-fix + severity: High + impact: High +- relnote: Fixed unintended eager connection related to consensus connections among Subscriber Only group members + component: BDR + component_version: 5.6.1 + details: | + The msgbroker module used to establish consensus connections lazily, meaning that connections + were created only when the first message was sent to a specific destination. This method + negatively affected the latency of Raft leader elections. The behavior was modified to create + connections to consensus peers eagerly. However, this change resulted in an unintended + consequence: a fully meshed consensus network among subscriber-only nodes, which may conflict + with customer network designs. This patch keeps the eager connection setup but limits it to + voting nodes only, reverting to a lazy connection setup for non-voting nodes. + jira: BDR-5666 + addresses: "42041" + type: Bug-fix + severity: High + impact: High +- relnote: Fixed autopatition task scheduling. + component: BDR + component_version: 5.6.1 + details: | + To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks + that are prone to failure won't consistently impact the success of other tasks. + jira: BDR-5638 + addresses: "41998" + type: Bug-fix + severity: High + impact: High +- relnote: Fixed parting subscription with standbys. + component: BDR + component_version: 5.6.1 + details: | + The parting subscription used to hang, failing to wait for standbys when the + bdr.standby_slot_names parameter was defined. + jira: BDR-5658 + addresses: "41821" + type: Bug-fix + severity: High + impact: High +- relnote: Added `bdr.wait_node_confirm_lsn()`. + component: BDR + component_version: 5.6.1 + details: | + The function `bdr.wait_node_confirm_lsn()` has been introduced to wait until a specific node + reaches a designated Log Sequence Number (LSN). It first checks the `confirmed_flush_lsn` of + the replication slot for the specified node. If that information is not available, the function + connects to the node and queries `pg_replication_origin_progress()`, using the invoking node as + the origin. + If the `nodename` parameter is NULL, the function will wait for all nodes to reach the specified + LSN. If the `target` LSN is NULL, it will wait for the current `wal_flush_lsn`. + jira: BDR-5200 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Improvements made in SO Node Management and Progress Tracking. + component: BDR + component_version: 5.6.1 + details: | + An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in + progress updates. Improvements include enhanced watermark management for SO leaders in the Himesh + configuration, where write leaders now include watermarks in their updates. Watermarks are broadcasted + to simplify progress tracking on idle clusters. The peer progress mapping for SO nodes has been corrected, + and the tap test for group slot movement has been revised. + Additionally, the `bdr_get_all_origins` function now considers SO node origins. + jira: BDR-5549 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: LSN Progress in Optimized Topology Configurations is now communicated. + component: BDR + component_version: 5.6.1 + details: | + While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized + topology configuration, the LSN progress of all data nodes is periodically communicated to these + subscriber-only nodes through logical replication. + jira: BDR-5549 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Fixed parting SO node with multiple origins. + component: BDR + component_version: 5.6.1 + details: | + All relevant origins must be removed when parting SO node + With himesh, parting an SO node should result in removing all origins it + has, not just the one related to its SO group leader. + When parting a data node, even though there is no subscription to it + from SO node, the origin should be removed + DO not make SO node target of a part catchup subscription when himesh + enabled + jira: BDR-5552 + addresses: "" + type: Bug-fix + severity: High + impact: High +- relnote: Stopped creation of slots for subscriber only nodes on witness nodes. + component: BDR + component_version: 5.6.1 + details: | + Subscriber only nodes should not have slots on witness nodes. + jira: BDR-5618 + addresses: "" + type: Bug-fix + severity: High + impact: High +- relnote: Some DDL commands are now allowed by `bdr.permit_unsafe_commands` when set. + component: BDR + component_version: 5.6.1 + details: | + The `bdr.permit_unsafe_commands` parameter now allows some DDL commands that were previously disallowed. Specifically `ALTER COLUMN...TYPE...USING` can now be permitted if the user knows the operation is safe. + jira: "" + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Ensure no waiting for DEGRADE timeout when in an already degraded state. + component: BDR + component_version: 5.6.1 + details: | + When using commit scope with DEGRADE clause, if system detects that it's in degraded state, transactions should start in the DEGRADE mode. This ensures that the timeout is not applied on every commit. + jira: BDR-5651 + addresses: "" + type: Bug-fix + severity: High + impact: High +- relnote: Fixed routing strategy for read nodes. + component: PGD Proxy + component_version: 5.6.1 + details: | + Corrected routing strategy for read nodes after a network partition. + jira: BDR-5216 + addresses: "" + type: Bug-fix + severity: Medium + impact: Medium diff --git a/product_docs/docs/pgd/5.6/scaling.mdx b/product_docs/docs/pgd/5.6/scaling.mdx index 2f064cee977..612e43afda4 100644 --- a/product_docs/docs/pgd/5.6/scaling.mdx +++ b/product_docs/docs/pgd/5.6/scaling.mdx @@ -184,3 +184,21 @@ to enable autopartitioning on the given table. If autopartitioning is already enabled, then no action occurs. Similarly, use [`bdr.autopartition_disable()`](/pgd/latest/reference/autopartition#bdrautopartition_disable) to disable autopartitioning on the given table. + +## Restrictions on EPAS-native automatic partitioning + +EPAS-native automatic partitioning is not supported on PGD. + +If the PGD extension is active on an EPAS database, DDL commands to configure +EPAS automatic partitioning (`ALTER TABLE ... SET AUTOMATIC` and `ALTER TABLE ... SET INTERVAL`) +will be rejected. + +Note that while it is possible to enable the PGD extension on an EPAS database +containing tables configured to use EPAS-native automatic partitioning, it +will not be possible to join further nodes using this node as a source node. + +EPAS-native automatic partitioning can be disabled with one of the following +commands: + +- `ALTER TABLE ... SET MANUAL` (for list partitioned tables) +- `ALTER TABLE ... SET INTERVAL ()` (for interval partitioned tables) diff --git a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx index 5e735aa2107..97e74fae2a0 100644 --- a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx +++ b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx @@ -16,6 +16,7 @@ This is a role for an admin user that can manage anything PGD related. It allows - ALL PRIVILEGES ON ALL TABLES IN SCHEMA BDR - ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA BDR + ### bdr_read_all_stats This role provides read access to most of the tables, views, and functions that users or applications may need to observe the statistics and state of the PGD cluster. @@ -150,6 +151,7 @@ This role is designed for applications that require access to PGD features, obje - [`bdr.trigger_get_xid`](/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid) - [`bdr.wait_for_camo_partner_queue`](/pgd/latest/reference/functions#bdrwait_for_camo_partner_queue) - [`bdr.wait_slot_confirm_lsn`](/pgd/latest/reference/functions#bdrwait_slot_confirm_lsn) +- [`bdr.wait_node_confirm_lsn`](/pgd/latest/reference/functions#bdrwait_node_confirm_lsn) Many of these functions require additional privileges before you can use them. For example, you must be the table owner to successfully execute diff --git a/product_docs/docs/pgd/5/overview/index.mdx b/product_docs/docs/pgd/5/overview/index.mdx index 190e12f9b55..d4bb1924ac1 100644 --- a/product_docs/docs/pgd/5/overview/index.mdx +++ b/product_docs/docs/pgd/5/overview/index.mdx @@ -100,7 +100,7 @@ In the future, one node will be elected as the main replicator to other groups, ### Supported Postgres database servers -PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. +PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](/pge/latest), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. Some key PGD features depend on certain core capabilities being available in the target Postgres database server. Therefore, PGD users must also adopt the Postgres database server distribution that's best suited to their business needs. For example, if having the PGD feature Commit At Most Once (CAMO) is mission critical to your use case, don't adopt the community PostgreSQL distribution. It doesn't have the core capability required to handle CAMO. See the full feature matrix compatibility in [Choosing a Postgres distribution](../planning/choosing_server/). diff --git a/product_docs/docs/pgd/5/reference/index.json b/product_docs/docs/pgd/5/reference/index.json index fbce200c01e..7fce149a51b 100644 --- a/product_docs/docs/pgd/5/reference/index.json +++ b/product_docs/docs/pgd/5/reference/index.json @@ -1,351 +1,351 @@ { - "bdrcamo_decision_journal": "/pgd/5/reference/catalogs-visible#bdrcamo_decision_journal", - "bdrcommit_scopes": "/pgd/5/reference/catalogs-visible#bdrcommit_scopes", - "bdrconflict_history": "/pgd/5/reference/catalogs-visible#bdrconflict_history", - "bdrconflict_history_summary": "/pgd/5/reference/catalogs-visible#bdrconflict_history_summary", - "bdrconsensus_kv_data": "/pgd/5/reference/catalogs-visible#bdrconsensus_kv_data", - "bdrcrdt_handlers": "/pgd/5/reference/catalogs-visible#bdrcrdt_handlers", - "bdrddl_replication": "/pgd/5/reference/pgd-settings#bdrddl_replication", - "bdrdepend": "/pgd/5/reference/catalogs-visible#bdrdepend", - "bdrglobal_consensus_journal": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_journal", - "bdrglobal_consensus_journal_details": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_journal_details", - "bdrglobal_consensus_response_journal": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_response_journal", - "bdrglobal_lock": "/pgd/5/reference/catalogs-visible#bdrglobal_lock", - "bdrglobal_locks": "/pgd/5/reference/catalogs-visible#bdrglobal_locks", - "bdrgroup_camo_details": "/pgd/5/reference/catalogs-visible#bdrgroup_camo_details", - "bdrgroup_raft_details": "/pgd/5/reference/catalogs-visible#bdrgroup_raft_details", - "bdrgroup_replslots_details": "/pgd/5/reference/catalogs-visible#bdrgroup_replslots_details", - "bdrgroup_subscription_summary": "/pgd/5/reference/catalogs-visible#bdrgroup_subscription_summary", - "bdrgroup_versions_details": "/pgd/5/reference/catalogs-visible#bdrgroup_versions_details", - "bdrlocal_consensus_snapshot": "/pgd/5/reference/catalogs-visible#bdrlocal_consensus_snapshot", - "bdrlocal_consensus_state": "/pgd/5/reference/catalogs-visible#bdrlocal_consensus_state", - "bdrlocal_node": "/pgd/5/reference/catalogs-visible#bdrlocal_node", - "bdrlocal_node_summary": "/pgd/5/reference/catalogs-visible#bdrlocal_node_summary", - "bdrlocal_sync_status": "/pgd/5/reference/catalogs-visible#bdrlocal_sync_status", - "bdrnode": "/pgd/5/reference/catalogs-visible#bdrnode", - "bdrnode_catchup_info": "/pgd/5/reference/catalogs-visible#bdrnode_catchup_info", - "bdrnode_catchup_info_details": "/pgd/5/reference/catalogs-visible#bdrnode_catchup_info_details", - "bdrnode_conflict_resolvers": "/pgd/5/reference/catalogs-visible#bdrnode_conflict_resolvers", - "bdrnode_group": "/pgd/5/reference/catalogs-visible#bdrnode_group", - "bdrnode_group_replication_sets": "/pgd/5/reference/catalogs-visible#bdrnode_group_replication_sets", - "bdrnode_group_summary": "/pgd/5/reference/catalogs-visible#bdrnode_group_summary", - "bdrnode_local_info": "/pgd/5/reference/catalogs-visible#bdrnode_local_info", - "bdrnode_log_config": "/pgd/5/reference/catalogs-visible#bdrnode_log_config", - "bdrnode_peer_progress": "/pgd/5/reference/catalogs-visible#bdrnode_peer_progress", - "bdrnode_replication_rates": "/pgd/5/reference/catalogs-visible#bdrnode_replication_rates", - "bdrnode_slots": "/pgd/5/reference/catalogs-visible#bdrnode_slots", - "bdrnode_summary": "/pgd/5/reference/catalogs-visible#bdrnode_summary", - "bdrqueue": "/pgd/5/reference/catalogs-visible#bdrqueue", - "bdrreplication_set": "/pgd/5/reference/catalogs-visible#bdrreplication_set", - "bdrreplication_set_table": "/pgd/5/reference/catalogs-visible#bdrreplication_set_table", - "bdrreplication_set_ddl": "/pgd/5/reference/catalogs-visible#bdrreplication_set_ddl", - "bdrreplication_sets": "/pgd/5/reference/catalogs-visible#bdrreplication_sets", - "bdrschema_changes": "/pgd/5/reference/catalogs-visible#bdrschema_changes", - "bdrsequence_alloc": "/pgd/5/reference/catalogs-visible#bdrsequence_alloc", - "bdrsequences": "/pgd/5/reference/catalogs-visible#bdrsequences", - "bdrstat_activity": "/pgd/5/reference/catalogs-visible#bdrstat_activity", - "bdrstat_relation": "/pgd/5/reference/catalogs-visible#bdrstat_relation", - "bdrstat_subscription": "/pgd/5/reference/catalogs-visible#bdrstat_subscription", - "bdrsubscription": "/pgd/5/reference/catalogs-visible#bdrsubscription", - "bdrsubscription_summary": "/pgd/5/reference/catalogs-visible#bdrsubscription_summary", - "bdrtables": "/pgd/5/reference/catalogs-visible#bdrtables", - "bdrtaskmgr_work_queue": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_work_queue", - "bdrtaskmgr_workitem_status": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_workitem_status", - "bdrtaskmgr_local_work_queue": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_local_work_queue", - "bdrtaskmgr_local_workitem_status": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_local_workitem_status", - "bdrtrigger": "/pgd/5/reference/catalogs-visible#bdrtrigger", - "bdrtriggers": "/pgd/5/reference/catalogs-visible#bdrtriggers", - "bdrworkers": "/pgd/5/reference/catalogs-visible#bdrworkers", - "bdrwriters": "/pgd/5/reference/catalogs-visible#bdrwriters", - "bdrworker_tasks": "/pgd/5/reference/catalogs-visible#bdrworker_tasks", - "bdrbdr_version": "/pgd/5/reference/functions#bdrbdr_version", - "bdrbdr_version_num": "/pgd/5/reference/functions#bdrbdr_version_num", - "bdrget_relation_stats": "/pgd/5/reference/functions#bdrget_relation_stats", - "bdrget_subscription_stats": "/pgd/5/reference/functions#bdrget_subscription_stats", - "bdrlocal_node_id": "/pgd/5/reference/functions#bdrlocal_node_id", - "bdrlast_committed_lsn": "/pgd/5/reference/functions#bdrlast_committed_lsn", - "transaction_id": "/pgd/5/reference/functions#transaction_id", - "bdris_node_connected": "/pgd/5/reference/functions#bdris_node_connected", - "bdris_node_ready": "/pgd/5/reference/functions#bdris_node_ready", - "bdrconsensus_disable": "/pgd/5/reference/functions#bdrconsensus_disable", - "bdrconsensus_enable": "/pgd/5/reference/functions#bdrconsensus_enable", - "bdrconsensus_proto_version": "/pgd/5/reference/functions#bdrconsensus_proto_version", - "bdrconsensus_snapshot_export": "/pgd/5/reference/functions#bdrconsensus_snapshot_export", - "bdrconsensus_snapshot_import": "/pgd/5/reference/functions#bdrconsensus_snapshot_import", - "bdrconsensus_snapshot_verify": "/pgd/5/reference/functions#bdrconsensus_snapshot_verify", - "bdrget_consensus_status": "/pgd/5/reference/functions#bdrget_consensus_status", - "bdrget_raft_status": "/pgd/5/reference/functions#bdrget_raft_status", - "bdrraft_leadership_transfer": "/pgd/5/reference/functions#bdrraft_leadership_transfer", - "bdrwait_slot_confirm_lsn": "/pgd/5/reference/functions#bdrwait_slot_confirm_lsn", - "bdrwait_for_apply_queue": "/pgd/5/reference/functions#bdrwait_for_apply_queue", - "bdrget_node_sub_receive_lsn": "/pgd/5/reference/functions#bdrget_node_sub_receive_lsn", - "bdrget_node_sub_apply_lsn": "/pgd/5/reference/functions#bdrget_node_sub_apply_lsn", - "bdrreplicate_ddl_command": "/pgd/5/reference/functions#bdrreplicate_ddl_command", - "bdrrun_on_all_nodes": "/pgd/5/reference/functions#bdrrun_on_all_nodes", - "bdrrun_on_nodes": "/pgd/5/reference/functions#bdrrun_on_nodes", - "bdrrun_on_group": "/pgd/5/reference/functions#bdrrun_on_group", - "bdrglobal_lock_table": "/pgd/5/reference/functions#bdrglobal_lock_table", - "bdrwait_for_xid_progress": "/pgd/5/reference/functions#bdrwait_for_xid_progress", - "bdrlocal_group_slot_name": "/pgd/5/reference/functions#bdrlocal_group_slot_name", - "bdrnode_group_type": "/pgd/5/reference/functions#bdrnode_group_type", - "bdralter_node_kind": "/pgd/5/reference/functions#bdralter_node_kind", - "bdralter_subscription_skip_changes_upto": "/pgd/5/reference/functions#bdralter_subscription_skip_changes_upto", - "bdrglobal_advisory_lock": "/pgd/5/reference/functions#bdrglobal_advisory_lock", - "bdrglobal_advisory_unlock": "/pgd/5/reference/functions#bdrglobal_advisory_unlock", - "bdrmonitor_group_versions": "/pgd/5/reference/functions#bdrmonitor_group_versions", - "bdrmonitor_group_raft": "/pgd/5/reference/functions#bdrmonitor_group_raft", - "bdrmonitor_local_replslots": "/pgd/5/reference/functions#bdrmonitor_local_replslots", - "bdrwal_sender_stats": "/pgd/5/reference/functions#bdrwal_sender_stats", - "bdrget_decoding_worker_stat": "/pgd/5/reference/functions#bdrget_decoding_worker_stat", - "bdrlag_control": "/pgd/5/reference/functions#bdrlag_control", - "bdris_camo_partner_connected": "/pgd/5/reference/functions#bdris_camo_partner_connected", - "bdris_camo_partner_ready": "/pgd/5/reference/functions#bdris_camo_partner_ready", - "bdrget_configured_camo_partner": "/pgd/5/reference/functions#bdrget_configured_camo_partner", - "bdrwait_for_camo_partner_queue": "/pgd/5/reference/functions#bdrwait_for_camo_partner_queue", - "bdrcamo_transactions_resolved": "/pgd/5/reference/functions#bdrcamo_transactions_resolved", - "bdrlogical_transaction_status": "/pgd/5/reference/functions#bdrlogical_transaction_status", - "bdradd_commit_scope": "/pgd/5/reference/functions#bdradd_commit_scope", - "bdralter_commit_scope": "/pgd/5/reference/functions#bdralter_commit_scope", - "bdrremove_commit_scope": "/pgd/5/reference/functions#bdrremove_commit_scope", - "bdrdefault_conflict_detection": "/pgd/5/reference/pgd-settings#bdrdefault_conflict_detection", - "bdrdefault_sequence_kind": "/pgd/5/reference/pgd-settings#bdrdefault_sequence_kind", - "bdrdefault_replica_identity": "/pgd/5/reference/pgd-settings#bdrdefault_replica_identity", - "bdrrole_replication": "/pgd/5/reference/pgd-settings#bdrrole_replication", - "bdrddl_locking": "/pgd/5/reference/pgd-settings#bdrddl_locking", - "bdrtruncate_locking": "/pgd/5/reference/pgd-settings#bdrtruncate_locking", - "bdrglobal_lock_max_locks": "/pgd/5/reference/pgd-settings#bdrglobal_lock_max_locks", - "bdrglobal_lock_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_timeout", - "bdrglobal_lock_statement_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_statement_timeout", - "bdrglobal_lock_idle_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_idle_timeout", - "bdrlock_table_locking": "/pgd/5/reference/pgd-settings#bdrlock_table_locking", - "bdrpredictive_checks": "/pgd/5/reference/pgd-settings#bdrpredictive_checks", - "bdrreplay_progress_frequency": "/pgd/5/reference/pgd-settings#bdrreplay_progress_frequency", - "bdrstandby_slot_names": "/pgd/5/reference/pgd-settings#bdrstandby_slot_names", - "bdrwriters_per_subscription": "/pgd/5/reference/pgd-settings#bdrwriters_per_subscription", - "bdrmax_writers_per_subscription": "/pgd/5/reference/pgd-settings#bdrmax_writers_per_subscription", - "bdrxact_replication": "/pgd/5/reference/pgd-settings#bdrxact_replication", - "bdrpermit_unsafe_commands": "/pgd/5/reference/pgd-settings#bdrpermit_unsafe_commands", - "bdrbatch_inserts": "/pgd/5/reference/pgd-settings#bdrbatch_inserts", - "bdrmaximum_clock_skew": "/pgd/5/reference/pgd-settings#bdrmaximum_clock_skew", - "bdrmaximum_clock_skew_action": "/pgd/5/reference/pgd-settings#bdrmaximum_clock_skew_action", - "bdraccept_connections": "/pgd/5/reference/pgd-settings#bdraccept_connections", - "bdrstandby_slots_min_confirmed": "/pgd/5/reference/pgd-settings#bdrstandby_slots_min_confirmed", - "bdrwriter_input_queue_size": "/pgd/5/reference/pgd-settings#bdrwriter_input_queue_size", - "bdrwriter_output_queue_size": "/pgd/5/reference/pgd-settings#bdrwriter_output_queue_size", - "bdrmin_worker_backoff_delay": "/pgd/5/reference/pgd-settings#bdrmin_worker_backoff_delay", - "bdrcrdt_raw_value": "/pgd/5/reference/pgd-settings#bdrcrdt_raw_value", - "bdrcommit_scope": "/pgd/5/reference/pgd-settings#bdrcommit_scope", - "bdrcamo_local_mode_delay": "/pgd/5/reference/pgd-settings#bdrcamo_local_mode_delay", - "bdrcamo_enable_client_warnings": "/pgd/5/reference/pgd-settings#bdrcamo_enable_client_warnings", - "bdrdefault_streaming_mode": "/pgd/5/reference/pgd-settings#bdrdefault_streaming_mode", - "bdrlag_control_max_commit_delay": "/pgd/5/reference/pgd-settings#bdrlag_control_max_commit_delay", - "bdrlag_control_max_lag_size": "/pgd/5/reference/pgd-settings#bdrlag_control_max_lag_size", - "bdrlag_control_max_lag_time": "/pgd/5/reference/pgd-settings#bdrlag_control_max_lag_time", - "bdrlag_control_min_conforming_nodes": "/pgd/5/reference/pgd-settings#bdrlag_control_min_conforming_nodes", - "bdrlag_control_commit_delay_adjust": "/pgd/5/reference/pgd-settings#bdrlag_control_commit_delay_adjust", - "bdrlag_control_sample_interval": "/pgd/5/reference/pgd-settings#bdrlag_control_sample_interval", - "bdrlag_control_commit_delay_start": "/pgd/5/reference/pgd-settings#bdrlag_control_commit_delay_start", - "bdrtimestamp_snapshot_keep": "/pgd/5/reference/pgd-settings#bdrtimestamp_snapshot_keep", - "bdrdebug_level": "/pgd/5/reference/pgd-settings#bdrdebug_level", - "bdrtrace_level": "/pgd/5/reference/pgd-settings#bdrtrace_level", - "bdrtrack_subscription_apply": "/pgd/5/reference/pgd-settings#bdrtrack_subscription_apply", - "bdrtrack_relation_apply": "/pgd/5/reference/pgd-settings#bdrtrack_relation_apply", - "bdrtrack_apply_lock_timing": "/pgd/5/reference/pgd-settings#bdrtrack_apply_lock_timing", - "bdrenable_wal_decoder": "/pgd/5/reference/pgd-settings#bdrenable_wal_decoder", - "bdrreceive_lcr": "/pgd/5/reference/pgd-settings#bdrreceive_lcr", - "bdrlcr_cleanup_interval": "/pgd/5/reference/pgd-settings#bdrlcr_cleanup_interval", - "bdrglobal_connection_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_connection_timeout", - "bdrglobal_keepalives": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives", - "bdrglobal_keepalives_idle": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_idle", - "bdrglobal_keepalives_interval": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_interval", - "bdrglobal_keepalives_count": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_count", - "bdrglobal_tcp_user_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_tcp_user_timeout", - "bdrraft_global_election_timeout": "/pgd/5/reference/pgd-settings#bdrraft_global_election_timeout", - "bdrraft_group_election_timeout": "/pgd/5/reference/pgd-settings#bdrraft_group_election_timeout", - "bdrraft_response_timeout": "/pgd/5/reference/pgd-settings#bdrraft_response_timeout", - "bdrraft_keep_min_entries": "/pgd/5/reference/pgd-settings#bdrraft_keep_min_entries", - "bdrraft_log_min_apply_duration": "/pgd/5/reference/pgd-settings#bdrraft_log_min_apply_duration", - "bdrraft_log_min_message_duration": "/pgd/5/reference/pgd-settings#bdrraft_log_min_message_duration", - "bdrraft_group_max_connections": "/pgd/5/reference/pgd-settings#bdrraft_group_max_connections", - "bdrbackwards_compatibility": "/pgd/5/reference/pgd-settings#bdrbackwards_compatibility", - "bdrtrack_replication_estimates": "/pgd/5/reference/pgd-settings#bdrtrack_replication_estimates", - "bdrlag_tracker_apply_rate_weight": "/pgd/5/reference/pgd-settings#bdrlag_tracker_apply_rate_weight", - "bdrenable_auto_sync_reconcile": "/pgd/5/reference/pgd-settings#bdrenable_auto_sync_reconcile", - "list-of-node-states": "/pgd/5/reference/nodes#list-of-node-states", - "node-management-commands": "/pgd/5/reference/nodes#node-management-commands", - "bdr_init_physical": "/pgd/5/reference/nodes#bdr_init_physical", - "bdralter_node_group_option": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_group_option", - "bdralter_node_interface": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_interface", - "bdralter_node_option": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_option", - "bdralter_subscription_enable": "/pgd/5/reference/nodes-management-interfaces#bdralter_subscription_enable", - "bdralter_subscription_disable": "/pgd/5/reference/nodes-management-interfaces#bdralter_subscription_disable", - "bdrcreate_node": "/pgd/5/reference/nodes-management-interfaces#bdrcreate_node", - "bdrcreate_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrcreate_node_group", - "bdrjoin_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrjoin_node_group", - "bdrpart_node": "/pgd/5/reference/nodes-management-interfaces#bdrpart_node", - "bdrpromote_node": "/pgd/5/reference/nodes-management-interfaces#bdrpromote_node", - "bdrswitch_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrswitch_node_group", - "bdrwait_for_join_completion": "/pgd/5/reference/nodes-management-interfaces#bdrwait_for_join_completion", - "bdralter_node_group_config": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_group_config", - "bdrdrop_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrdrop_node_group", - "bdrcreate_proxy": "/pgd/5/reference/routing#bdrcreate_proxy", - "bdralter_proxy_option": "/pgd/5/reference/routing#bdralter_proxy_option", - "bdrdrop_proxy": "/pgd/5/reference/routing#bdrdrop_proxy", - "bdrrouting_leadership_transfer": "/pgd/5/reference/routing#bdrrouting_leadership_transfer", - "cs.commit-scope-syntax": "/pgd/5/reference/commit-scopes#commit-scope-syntax", - "cs.commit-scope-groups": "/pgd/5/reference/commit-scopes#commit-scope-groups", - "cs.any": "/pgd/5/reference/commit-scopes#any", - "cs.any-not": "/pgd/5/reference/commit-scopes#any-not", - "cs.majority": "/pgd/5/reference/commit-scopes#majority", - "cs.majority-not": "/pgd/5/reference/commit-scopes#majority-not", - "cs.all": "/pgd/5/reference/commit-scopes#all", - "cs.all-not": "/pgd/5/reference/commit-scopes#all-not", - "cs.confirmation-level": "/pgd/5/reference/commit-scopes#confirmation-level", - "cs.on-received": "/pgd/5/reference/commit-scopes#on-received", - "cs.on-replicated": "/pgd/5/reference/commit-scopes#on-replicated", - "cs.on-durable": "/pgd/5/reference/commit-scopes#on-durable", - "cs.on-visible": "/pgd/5/reference/commit-scopes#on-visible", - "cs.commit-scope-kinds": "/pgd/5/reference/commit-scopes#commit-scope-kinds", - "cs.group-commit": "/pgd/5/reference/commit-scopes#group-commit", - "cs.group-commit-parameters": "/pgd/5/reference/commit-scopes#group-commit-parameters", - "cs.abort-on-parameters": "/pgd/5/reference/commit-scopes#abort-on-parameters", - "cs.transaction_tracking-settings": "/pgd/5/reference/commit-scopes#transaction_tracking-settings", - "cs.conflict_resolution-settings": "/pgd/5/reference/commit-scopes#conflict_resolution-settings", - "cs.commit_decision-settings": "/pgd/5/reference/commit-scopes#commit_decision-settings", - "cs.camo": "/pgd/5/reference/commit-scopes#camo", - "cs.degrade-on-parameters": "/pgd/5/reference/commit-scopes#degrade-on-parameters", - "cs.lag-control": "/pgd/5/reference/commit-scopes#lag-control", - "cs.lag-control-parameters": "/pgd/5/reference/commit-scopes#lag-control-parameters", - "cs.synchronous_commit": "/pgd/5/reference/commit-scopes#synchronous_commit", - "conflict-detection": "/pgd/5/reference/conflicts#conflict-detection", - "list-of-conflict-types": "/pgd/5/reference/conflicts#list-of-conflict-types", - "conflict-resolution": "/pgd/5/reference/conflicts#conflict-resolution", - "list-of-conflict-resolvers": "/pgd/5/reference/conflicts#list-of-conflict-resolvers", - "default-conflict-resolvers": "/pgd/5/reference/conflicts#default-conflict-resolvers", - "list-of-conflict-resolutions": "/pgd/5/reference/conflicts#list-of-conflict-resolutions", - "conflict-logging": "/pgd/5/reference/conflicts#conflict-logging", - "bdralter_table_conflict_detection": "/pgd/5/reference/conflict_functions#bdralter_table_conflict_detection", - "bdralter_node_set_conflict_resolver": "/pgd/5/reference/conflict_functions#bdralter_node_set_conflict_resolver", - "bdralter_node_set_log_config": "/pgd/5/reference/conflict_functions#bdralter_node_set_log_config", - "bdrcreate_replication_set": "/pgd/5/reference/repsets-management#bdrcreate_replication_set", - "bdralter_replication_set": "/pgd/5/reference/repsets-management#bdralter_replication_set", - "bdrdrop_replication_set": "/pgd/5/reference/repsets-management#bdrdrop_replication_set", - "bdralter_node_replication_sets": "/pgd/5/reference/repsets-management#bdralter_node_replication_sets", - "bdrreplication_set_add_table": "/pgd/5/reference/repsets-membership#bdrreplication_set_add_table", - "bdrreplication_set_remove_table": "/pgd/5/reference/repsets-membership#bdrreplication_set_remove_table", - "bdrreplication_set_add_ddl_filter": "/pgd/5/reference/repsets-ddl-filtering#bdrreplication_set_add_ddl_filter", - "bdrreplication_set_remove_ddl_filter": "/pgd/5/reference/repsets-ddl-filtering#bdrreplication_set_remove_ddl_filter", - "pgd_bench": "/pgd/5/reference/testingandtuning#pgd_bench", - "bdralter_sequence_set_kind": "/pgd/5/reference/sequences#bdralter_sequence_set_kind", - "bdrextract_timestamp_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_timestamp_from_snowflakeid", - "bdrextract_nodeid_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_nodeid_from_snowflakeid", - "bdrextract_localseqid_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_localseqid_from_snowflakeid", - "bdrtimestamp_to_snowflakeid": "/pgd/5/reference/sequences#bdrtimestamp_to_snowflakeid", - "bdrextract_timestamp_from_timeshard": "/pgd/5/reference/sequences#bdrextract_timestamp_from_timeshard", - "bdrextract_nodeid_from_timeshard": "/pgd/5/reference/sequences#bdrextract_nodeid_from_timeshard", - "bdrextract_localseqid_from_timeshard": "/pgd/5/reference/sequences#bdrextract_localseqid_from_timeshard", - "bdrtimestamp_to_timeshard": "/pgd/5/reference/sequences#bdrtimestamp_to_timeshard", - "bdrgen_ksuuid_v2": "/pgd/5/reference/sequences#bdrgen_ksuuid_v2", - "bdrksuuid_v2_cmp": "/pgd/5/reference/sequences#bdrksuuid_v2_cmp", - "bdrextract_timestamp_from_ksuuid_v2": "/pgd/5/reference/sequences#bdrextract_timestamp_from_ksuuid_v2", - "bdrgen_ksuuid": "/pgd/5/reference/sequences#bdrgen_ksuuid", - "bdruuid_v1_cmp": "/pgd/5/reference/sequences#bdruuid_v1_cmp", - "bdrextract_timestamp_from_ksuuid": "/pgd/5/reference/sequences#bdrextract_timestamp_from_ksuuid", - "bdrautopartition": "/pgd/5/reference/autopartition#bdrautopartition", - "bdrdrop_autopartition": "/pgd/5/reference/autopartition#bdrdrop_autopartition", - "bdrautopartition_wait_for_partitions": "/pgd/5/reference/autopartition#bdrautopartition_wait_for_partitions", - "bdrautopartition_wait_for_partitions_on_all_nodes": "/pgd/5/reference/autopartition#bdrautopartition_wait_for_partitions_on_all_nodes", - "bdrautopartition_find_partition": "/pgd/5/reference/autopartition#bdrautopartition_find_partition", - "bdrautopartition_enable": "/pgd/5/reference/autopartition#bdrautopartition_enable", - "bdrautopartition_disable": "/pgd/5/reference/autopartition#bdrautopartition_disable", - "internal-functions": "/pgd/5/reference/autopartition#internal-functions", - "bdrautopartition_create_partition": "/pgd/5/reference/autopartition#bdrautopartition_create_partition", - "bdrautopartition_drop_partition": "/pgd/5/reference/autopartition#bdrautopartition_drop_partition", - "bdrcreate_conflict_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrcreate_conflict_trigger", - "bdrcreate_transform_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrcreate_transform_trigger", - "bdrdrop_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrdrop_trigger", - "bdrtrigger_get_row": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_row", - "bdrtrigger_get_committs": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_committs", - "bdrtrigger_get_xid": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid", - "bdrtrigger_get_type": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_type", - "bdrtrigger_get_conflict_type": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_conflict_type", - "bdrtrigger_get_origin_node_id": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_origin_node_id", - "bdrri_fkey_on_del_trigger": "/pgd/5/reference/streamtriggers/rowfunctions#bdrri_fkey_on_del_trigger", - "tg_name": "/pgd/5/reference/streamtriggers/rowvariables#tg_name", - "tg_when": "/pgd/5/reference/streamtriggers/rowvariables#tg_when", - "tg_level": "/pgd/5/reference/streamtriggers/rowvariables#tg_level", - "tg_op": "/pgd/5/reference/streamtriggers/rowvariables#tg_op", - "tg_relid": "/pgd/5/reference/streamtriggers/rowvariables#tg_relid", - "tg_table_name": "/pgd/5/reference/streamtriggers/rowvariables#tg_table_name", - "tg_table_schema": "/pgd/5/reference/streamtriggers/rowvariables#tg_table_schema", - "tg_nargs": "/pgd/5/reference/streamtriggers/rowvariables#tg_nargs", - "tg_argv": "/pgd/5/reference/streamtriggers/rowvariables#tg_argv", - "bdrautopartition_partitions": "/pgd/5/reference/catalogs-internal#bdrautopartition_partitions", - "bdrautopartition_rules": "/pgd/5/reference/catalogs-internal#bdrautopartition_rules", - "bdrddl_epoch": "/pgd/5/reference/catalogs-internal#bdrddl_epoch", - "bdrevent_history": "/pgd/5/reference/catalogs-internal#bdrevent_history", - "bdrevent_summary": "/pgd/5/reference/catalogs-internal#bdrevent_summary", - "bdrnode_config": "/pgd/5/reference/catalogs-internal#bdrnode_config", - "bdrnode_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_config_summary", - "bdrnode_group_config": "/pgd/5/reference/catalogs-internal#bdrnode_group_config", - "bdrnode_group_routing_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_config_summary", - "bdrnode_group_routing_info": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_info", - "bdrnode_group_routing_summary": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_summary", - "bdrnode_routing_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_routing_config_summary", - "bdrproxy_config": "/pgd/5/reference/catalogs-internal#bdrproxy_config", - "bdrproxy_config_summary": "/pgd/5/reference/catalogs-internal#bdrproxy_config_summary", - "bdrsequence_kind": "/pgd/5/reference/catalogs-internal#bdrsequence_kind", - "bdrbdr_get_commit_decisions": "/pgd/5/reference/functions-internal#bdrbdr_get_commit_decisions", - "bdrbdr_track_commit_decision": "/pgd/5/reference/functions-internal#bdrbdr_track_commit_decision", - "bdrconsensus_kv_fetch": "/pgd/5/reference/functions-internal#bdrconsensus_kv_fetch", - "bdrconsensus_kv_store": "/pgd/5/reference/functions-internal#bdrconsensus_kv_store", - "bdrdecode_message_payload": "/pgd/5/reference/functions-internal#bdrdecode_message_payload", - "bdrdecode_message_response_payload": "/pgd/5/reference/functions-internal#bdrdecode_message_response_payload", - "bdrdifference_fix_origin_create": "/pgd/5/reference/functions-internal#bdrdifference_fix_origin_create", - "bdrdifference_fix_session_reset": "/pgd/5/reference/functions-internal#bdrdifference_fix_session_reset", - "bdrdifference_fix_session_setup": "/pgd/5/reference/functions-internal#bdrdifference_fix_session_setup", - "bdrdifference_fix_xact_set_avoid_conflict": "/pgd/5/reference/functions-internal#bdrdifference_fix_xact_set_avoid_conflict", - "bdrdrop_node": "/pgd/5/reference/functions-internal#bdrdrop_node", - "bdrget_global_locks": "/pgd/5/reference/functions-internal#bdrget_global_locks", - "bdrget_node_conflict_resolvers": "/pgd/5/reference/functions-internal#bdrget_node_conflict_resolvers", - "bdrget_slot_flush_timestamp": "/pgd/5/reference/functions-internal#bdrget_slot_flush_timestamp", - "bdrinternal_alter_sequence_set_kind": "/pgd/5/reference/functions-internal#bdrinternal_alter_sequence_set_kind", - "bdrinternal_replication_set_add_table": "/pgd/5/reference/functions-internal#bdrinternal_replication_set_add_table", - "bdrinternal_replication_set_remove_table": "/pgd/5/reference/functions-internal#bdrinternal_replication_set_remove_table", - "bdrinternal_submit_join_request": "/pgd/5/reference/functions-internal#bdrinternal_submit_join_request", - "bdrisolation_test_session_is_blocked": "/pgd/5/reference/functions-internal#bdrisolation_test_session_is_blocked", - "bdrlocal_node_info": "/pgd/5/reference/functions-internal#bdrlocal_node_info", - "bdrmsgb_connect": "/pgd/5/reference/functions-internal#bdrmsgb_connect", - "bdrmsgb_deliver_message": "/pgd/5/reference/functions-internal#bdrmsgb_deliver_message", - "bdrnode_catchup_state_name": "/pgd/5/reference/functions-internal#bdrnode_catchup_state_name", - "bdrnode_kind_name": "/pgd/5/reference/functions-internal#bdrnode_kind_name", - "bdrpeer_state_name": "/pgd/5/reference/functions-internal#bdrpeer_state_name", - "bdrpg_xact_origin": "/pgd/5/reference/functions-internal#bdrpg_xact_origin", - "bdrrequest_replay_progress_update": "/pgd/5/reference/functions-internal#bdrrequest_replay_progress_update", - "bdrreset_relation_stats": "/pgd/5/reference/functions-internal#bdrreset_relation_stats", - "bdrreset_subscription_stats": "/pgd/5/reference/functions-internal#bdrreset_subscription_stats", - "bdrresynchronize_table_from_node": "/pgd/5/reference/functions-internal#bdrresynchronize_table_from_node", - "bdrseq_currval": "/pgd/5/reference/functions-internal#bdrseq_currval", - "bdrseq_lastval": "/pgd/5/reference/functions-internal#bdrseq_lastval", - "bdrseq_nextval": "/pgd/5/reference/functions-internal#bdrseq_nextval", - "bdrshow_subscription_status": "/pgd/5/reference/functions-internal#bdrshow_subscription_status", - "bdrshow_workers": "/pgd/5/reference/functions-internal#bdrshow_workers", - "bdrshow_writers": "/pgd/5/reference/functions-internal#bdrshow_writers", - "bdrtaskmgr_set_leader": "/pgd/5/reference/functions-internal#bdrtaskmgr_set_leader", - "bdrtaskmgr_get_last_completed_workitem": "/pgd/5/reference/functions-internal#bdrtaskmgr_get_last_completed_workitem", - "bdrtaskmgr_work_queue_check_status": "/pgd/5/reference/functions-internal#bdrtaskmgr_work_queue_check_status", - "bdrpglogical_proto_version_ranges": "/pgd/5/reference/functions-internal#bdrpglogical_proto_version_ranges", - "bdrget_min_required_replication_slots": "/pgd/5/reference/functions-internal#bdrget_min_required_replication_slots", - "bdrget_min_required_worker_processes": "/pgd/5/reference/functions-internal#bdrget_min_required_worker_processes", - "bdrstat_get_activity": "/pgd/5/reference/functions-internal#bdrstat_get_activity", - "bdrworker_role_id_name": "/pgd/5/reference/functions-internal#bdrworker_role_id_name", - "bdrlag_history": "/pgd/5/reference/functions-internal#bdrlag_history", - "bdrget_raft_instance_by_nodegroup": "/pgd/5/reference/functions-internal#bdrget_raft_instance_by_nodegroup", - "bdrmonitor_camo_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_camo_on_all_nodes", - "bdrmonitor_raft_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_raft_details_on_all_nodes", - "bdrmonitor_replslots_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_replslots_details_on_all_nodes", - "bdrmonitor_subscription_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_subscription_details_on_all_nodes", - "bdrmonitor_version_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", - "bdrnode_group_member_info": "/pgd/5/reference/functions-internal#bdrnode_group_member_info", - "bdrcolumn_timestamps_create": "/pgd/5/reference/clcd#bdrcolumn_timestamps_create" -} \ No newline at end of file + "bdrcamo_decision_journal": "/pgd/latest/reference/catalogs-visible#bdrcamo_decision_journal", + "bdrcommit_scopes": "/pgd/latest/reference/catalogs-visible#bdrcommit_scopes", + "bdrconflict_history": "/pgd/latest/reference/catalogs-visible#bdrconflict_history", + "bdrconflict_history_summary": "/pgd/latest/reference/catalogs-visible#bdrconflict_history_summary", + "bdrconsensus_kv_data": "/pgd/latest/reference/catalogs-visible#bdrconsensus_kv_data", + "bdrcrdt_handlers": "/pgd/latest/reference/catalogs-visible#bdrcrdt_handlers", + "bdrddl_replication": "/pgd/latest/reference/pgd-settings#bdrddl_replication", + "bdrdepend": "/pgd/latest/reference/catalogs-visible#bdrdepend", + "bdrglobal_consensus_journal": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_journal", + "bdrglobal_consensus_journal_details": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_journal_details", + "bdrglobal_consensus_response_journal": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_response_journal", + "bdrglobal_lock": "/pgd/latest/reference/catalogs-visible#bdrglobal_lock", + "bdrglobal_locks": "/pgd/latest/reference/catalogs-visible#bdrglobal_locks", + "bdrgroup_camo_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_camo_details", + "bdrgroup_raft_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_raft_details", + "bdrgroup_replslots_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_replslots_details", + "bdrgroup_subscription_summary": "/pgd/latest/reference/catalogs-visible#bdrgroup_subscription_summary", + "bdrgroup_versions_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_versions_details", + "bdrlocal_consensus_snapshot": "/pgd/latest/reference/catalogs-visible#bdrlocal_consensus_snapshot", + "bdrlocal_consensus_state": "/pgd/latest/reference/catalogs-visible#bdrlocal_consensus_state", + "bdrlocal_node": "/pgd/latest/reference/catalogs-visible#bdrlocal_node", + "bdrlocal_node_summary": "/pgd/latest/reference/catalogs-visible#bdrlocal_node_summary", + "bdrlocal_sync_status": "/pgd/latest/reference/catalogs-visible#bdrlocal_sync_status", + "bdrnode": "/pgd/latest/reference/catalogs-visible#bdrnode", + "bdrnode_catchup_info": "/pgd/latest/reference/catalogs-visible#bdrnode_catchup_info", + "bdrnode_catchup_info_details": "/pgd/latest/reference/catalogs-visible#bdrnode_catchup_info_details", + "bdrnode_conflict_resolvers": "/pgd/latest/reference/catalogs-visible#bdrnode_conflict_resolvers", + "bdrnode_group": "/pgd/latest/reference/catalogs-visible#bdrnode_group", + "bdrnode_group_replication_sets": "/pgd/latest/reference/catalogs-visible#bdrnode_group_replication_sets", + "bdrnode_group_summary": "/pgd/latest/reference/catalogs-visible#bdrnode_group_summary", + "bdrnode_local_info": "/pgd/latest/reference/catalogs-visible#bdrnode_local_info", + "bdrnode_log_config": "/pgd/latest/reference/catalogs-visible#bdrnode_log_config", + "bdrnode_peer_progress": "/pgd/latest/reference/catalogs-visible#bdrnode_peer_progress", + "bdrnode_replication_rates": "/pgd/latest/reference/catalogs-visible#bdrnode_replication_rates", + "bdrnode_slots": "/pgd/latest/reference/catalogs-visible#bdrnode_slots", + "bdrnode_summary": "/pgd/latest/reference/catalogs-visible#bdrnode_summary", + "bdrqueue": "/pgd/latest/reference/catalogs-visible#bdrqueue", + "bdrreplication_set": "/pgd/latest/reference/catalogs-visible#bdrreplication_set", + "bdrreplication_set_table": "/pgd/latest/reference/catalogs-visible#bdrreplication_set_table", + "bdrreplication_set_ddl": "/pgd/latest/reference/catalogs-visible#bdrreplication_set_ddl", + "bdrreplication_sets": "/pgd/latest/reference/catalogs-visible#bdrreplication_sets", + "bdrschema_changes": "/pgd/latest/reference/catalogs-visible#bdrschema_changes", + "bdrsequence_alloc": "/pgd/latest/reference/catalogs-visible#bdrsequence_alloc", + "bdrsequences": "/pgd/latest/reference/catalogs-visible#bdrsequences", + "bdrstat_activity": "/pgd/latest/reference/catalogs-visible#bdrstat_activity", + "bdrstat_relation": "/pgd/latest/reference/catalogs-visible#bdrstat_relation", + "bdrstat_subscription": "/pgd/latest/reference/catalogs-visible#bdrstat_subscription", + "bdrsubscription": "/pgd/latest/reference/catalogs-visible#bdrsubscription", + "bdrsubscription_summary": "/pgd/latest/reference/catalogs-visible#bdrsubscription_summary", + "bdrtables": "/pgd/latest/reference/catalogs-visible#bdrtables", + "bdrtaskmgr_work_queue": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_work_queue", + "bdrtaskmgr_workitem_status": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_workitem_status", + "bdrtaskmgr_local_work_queue": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_local_work_queue", + "bdrtaskmgr_local_workitem_status": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_local_workitem_status", + "bdrtrigger": "/pgd/latest/reference/catalogs-visible#bdrtrigger", + "bdrtriggers": "/pgd/latest/reference/catalogs-visible#bdrtriggers", + "bdrworkers": "/pgd/latest/reference/catalogs-visible#bdrworkers", + "bdrwriters": "/pgd/latest/reference/catalogs-visible#bdrwriters", + "bdrworker_tasks": "/pgd/latest/reference/catalogs-visible#bdrworker_tasks", + "bdrbdr_version": "/pgd/latest/reference/functions#bdrbdr_version", + "bdrbdr_version_num": "/pgd/latest/reference/functions#bdrbdr_version_num", + "bdrget_relation_stats": "/pgd/latest/reference/functions#bdrget_relation_stats", + "bdrget_subscription_stats": "/pgd/latest/reference/functions#bdrget_subscription_stats", + "bdrlocal_node_id": "/pgd/latest/reference/functions#bdrlocal_node_id", + "bdrlast_committed_lsn": "/pgd/latest/reference/functions#bdrlast_committed_lsn", + "transaction_id": "/pgd/latest/reference/functions#transaction_id", + "bdris_node_connected": "/pgd/latest/reference/functions#bdris_node_connected", + "bdris_node_ready": "/pgd/latest/reference/functions#bdris_node_ready", + "bdrconsensus_disable": "/pgd/latest/reference/functions#bdrconsensus_disable", + "bdrconsensus_enable": "/pgd/latest/reference/functions#bdrconsensus_enable", + "bdrconsensus_proto_version": "/pgd/latest/reference/functions#bdrconsensus_proto_version", + "bdrconsensus_snapshot_export": "/pgd/latest/reference/functions#bdrconsensus_snapshot_export", + "bdrconsensus_snapshot_import": "/pgd/latest/reference/functions#bdrconsensus_snapshot_import", + "bdrconsensus_snapshot_verify": "/pgd/latest/reference/functions#bdrconsensus_snapshot_verify", + "bdrget_consensus_status": "/pgd/latest/reference/functions#bdrget_consensus_status", + "bdrget_raft_status": "/pgd/latest/reference/functions#bdrget_raft_status", + "bdrraft_leadership_transfer": "/pgd/latest/reference/functions#bdrraft_leadership_transfer", + "bdrwait_slot_confirm_lsn": "/pgd/latest/reference/functions#bdrwait_slot_confirm_lsn", + "bdrwait_for_apply_queue": "/pgd/latest/reference/functions#bdrwait_for_apply_queue", + "bdrget_node_sub_receive_lsn": "/pgd/latest/reference/functions#bdrget_node_sub_receive_lsn", + "bdrget_node_sub_apply_lsn": "/pgd/latest/reference/functions#bdrget_node_sub_apply_lsn", + "bdrreplicate_ddl_command": "/pgd/latest/reference/functions#bdrreplicate_ddl_command", + "bdrrun_on_all_nodes": "/pgd/latest/reference/functions#bdrrun_on_all_nodes", + "bdrrun_on_nodes": "/pgd/latest/reference/functions#bdrrun_on_nodes", + "bdrrun_on_group": "/pgd/latest/reference/functions#bdrrun_on_group", + "bdrglobal_lock_table": "/pgd/latest/reference/functions#bdrglobal_lock_table", + "bdrwait_for_xid_progress": "/pgd/latest/reference/functions#bdrwait_for_xid_progress", + "bdrlocal_group_slot_name": "/pgd/latest/reference/functions#bdrlocal_group_slot_name", + "bdrnode_group_type": "/pgd/latest/reference/functions#bdrnode_group_type", + "bdralter_node_kind": "/pgd/latest/reference/functions#bdralter_node_kind", + "bdralter_subscription_skip_changes_upto": "/pgd/latest/reference/functions#bdralter_subscription_skip_changes_upto", + "bdrglobal_advisory_lock": "/pgd/latest/reference/functions#bdrglobal_advisory_lock", + "bdrglobal_advisory_unlock": "/pgd/latest/reference/functions#bdrglobal_advisory_unlock", + "bdrmonitor_group_versions": "/pgd/latest/reference/functions#bdrmonitor_group_versions", + "bdrmonitor_group_raft": "/pgd/latest/reference/functions#bdrmonitor_group_raft", + "bdrmonitor_local_replslots": "/pgd/latest/reference/functions#bdrmonitor_local_replslots", + "bdrwal_sender_stats": "/pgd/latest/reference/functions#bdrwal_sender_stats", + "bdrget_decoding_worker_stat": "/pgd/latest/reference/functions#bdrget_decoding_worker_stat", + "bdrlag_control": "/pgd/latest/reference/functions#bdrlag_control", + "bdris_camo_partner_connected": "/pgd/latest/reference/functions#bdris_camo_partner_connected", + "bdris_camo_partner_ready": "/pgd/latest/reference/functions#bdris_camo_partner_ready", + "bdrget_configured_camo_partner": "/pgd/latest/reference/functions#bdrget_configured_camo_partner", + "bdrwait_for_camo_partner_queue": "/pgd/latest/reference/functions#bdrwait_for_camo_partner_queue", + "bdrcamo_transactions_resolved": "/pgd/latest/reference/functions#bdrcamo_transactions_resolved", + "bdrlogical_transaction_status": "/pgd/latest/reference/functions#bdrlogical_transaction_status", + "bdradd_commit_scope": "/pgd/latest/reference/functions#bdradd_commit_scope", + "bdralter_commit_scope": "/pgd/latest/reference/functions#bdralter_commit_scope", + "bdrremove_commit_scope": "/pgd/latest/reference/functions#bdrremove_commit_scope", + "bdrdefault_conflict_detection": "/pgd/latest/reference/pgd-settings#bdrdefault_conflict_detection", + "bdrdefault_sequence_kind": "/pgd/latest/reference/pgd-settings#bdrdefault_sequence_kind", + "bdrdefault_replica_identity": "/pgd/latest/reference/pgd-settings#bdrdefault_replica_identity", + "bdrrole_replication": "/pgd/latest/reference/pgd-settings#bdrrole_replication", + "bdrddl_locking": "/pgd/latest/reference/pgd-settings#bdrddl_locking", + "bdrtruncate_locking": "/pgd/latest/reference/pgd-settings#bdrtruncate_locking", + "bdrglobal_lock_max_locks": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_max_locks", + "bdrglobal_lock_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_timeout", + "bdrglobal_lock_statement_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_statement_timeout", + "bdrglobal_lock_idle_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_idle_timeout", + "bdrlock_table_locking": "/pgd/latest/reference/pgd-settings#bdrlock_table_locking", + "bdrpredictive_checks": "/pgd/latest/reference/pgd-settings#bdrpredictive_checks", + "bdrreplay_progress_frequency": "/pgd/latest/reference/pgd-settings#bdrreplay_progress_frequency", + "bdrstandby_slot_names": "/pgd/latest/reference/pgd-settings#bdrstandby_slot_names", + "bdrwriters_per_subscription": "/pgd/latest/reference/pgd-settings#bdrwriters_per_subscription", + "bdrmax_writers_per_subscription": "/pgd/latest/reference/pgd-settings#bdrmax_writers_per_subscription", + "bdrxact_replication": "/pgd/latest/reference/pgd-settings#bdrxact_replication", + "bdrpermit_unsafe_commands": "/pgd/latest/reference/pgd-settings#bdrpermit_unsafe_commands", + "bdrbatch_inserts": "/pgd/latest/reference/pgd-settings#bdrbatch_inserts", + "bdrmaximum_clock_skew": "/pgd/latest/reference/pgd-settings#bdrmaximum_clock_skew", + "bdrmaximum_clock_skew_action": "/pgd/latest/reference/pgd-settings#bdrmaximum_clock_skew_action", + "bdraccept_connections": "/pgd/latest/reference/pgd-settings#bdraccept_connections", + "bdrstandby_slots_min_confirmed": "/pgd/latest/reference/pgd-settings#bdrstandby_slots_min_confirmed", + "bdrwriter_input_queue_size": "/pgd/latest/reference/pgd-settings#bdrwriter_input_queue_size", + "bdrwriter_output_queue_size": "/pgd/latest/reference/pgd-settings#bdrwriter_output_queue_size", + "bdrmin_worker_backoff_delay": "/pgd/latest/reference/pgd-settings#bdrmin_worker_backoff_delay", + "bdrcrdt_raw_value": "/pgd/latest/reference/pgd-settings#bdrcrdt_raw_value", + "bdrcommit_scope": "/pgd/latest/reference/pgd-settings#bdrcommit_scope", + "bdrcamo_local_mode_delay": "/pgd/latest/reference/pgd-settings#bdrcamo_local_mode_delay", + "bdrcamo_enable_client_warnings": "/pgd/latest/reference/pgd-settings#bdrcamo_enable_client_warnings", + "bdrdefault_streaming_mode": "/pgd/latest/reference/pgd-settings#bdrdefault_streaming_mode", + "bdrlag_control_max_commit_delay": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_commit_delay", + "bdrlag_control_max_lag_size": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_lag_size", + "bdrlag_control_max_lag_time": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_lag_time", + "bdrlag_control_min_conforming_nodes": "/pgd/latest/reference/pgd-settings#bdrlag_control_min_conforming_nodes", + "bdrlag_control_commit_delay_adjust": "/pgd/latest/reference/pgd-settings#bdrlag_control_commit_delay_adjust", + "bdrlag_control_sample_interval": "/pgd/latest/reference/pgd-settings#bdrlag_control_sample_interval", + "bdrlag_control_commit_delay_start": "/pgd/latest/reference/pgd-settings#bdrlag_control_commit_delay_start", + "bdrtimestamp_snapshot_keep": "/pgd/latest/reference/pgd-settings#bdrtimestamp_snapshot_keep", + "bdrdebug_level": "/pgd/latest/reference/pgd-settings#bdrdebug_level", + "bdrtrace_level": "/pgd/latest/reference/pgd-settings#bdrtrace_level", + "bdrtrack_subscription_apply": "/pgd/latest/reference/pgd-settings#bdrtrack_subscription_apply", + "bdrtrack_relation_apply": "/pgd/latest/reference/pgd-settings#bdrtrack_relation_apply", + "bdrtrack_apply_lock_timing": "/pgd/latest/reference/pgd-settings#bdrtrack_apply_lock_timing", + "bdrenable_wal_decoder": "/pgd/latest/reference/pgd-settings#bdrenable_wal_decoder", + "bdrreceive_lcr": "/pgd/latest/reference/pgd-settings#bdrreceive_lcr", + "bdrlcr_cleanup_interval": "/pgd/latest/reference/pgd-settings#bdrlcr_cleanup_interval", + "bdrglobal_connection_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_connection_timeout", + "bdrglobal_keepalives": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives", + "bdrglobal_keepalives_idle": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_idle", + "bdrglobal_keepalives_interval": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_interval", + "bdrglobal_keepalives_count": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_count", + "bdrglobal_tcp_user_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_tcp_user_timeout", + "bdrraft_global_election_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_global_election_timeout", + "bdrraft_group_election_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_group_election_timeout", + "bdrraft_response_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_response_timeout", + "bdrraft_keep_min_entries": "/pgd/latest/reference/pgd-settings#bdrraft_keep_min_entries", + "bdrraft_log_min_apply_duration": "/pgd/latest/reference/pgd-settings#bdrraft_log_min_apply_duration", + "bdrraft_log_min_message_duration": "/pgd/latest/reference/pgd-settings#bdrraft_log_min_message_duration", + "bdrraft_group_max_connections": "/pgd/latest/reference/pgd-settings#bdrraft_group_max_connections", + "bdrbackwards_compatibility": "/pgd/latest/reference/pgd-settings#bdrbackwards_compatibility", + "bdrtrack_replication_estimates": "/pgd/latest/reference/pgd-settings#bdrtrack_replication_estimates", + "bdrlag_tracker_apply_rate_weight": "/pgd/latest/reference/pgd-settings#bdrlag_tracker_apply_rate_weight", + "bdrenable_auto_sync_reconcile": "/pgd/latest/reference/pgd-settings#bdrenable_auto_sync_reconcile", + "list-of-node-states": "/pgd/latest/reference/nodes#list-of-node-states", + "node-management-commands": "/pgd/latest/reference/nodes#node-management-commands", + "bdr_init_physical": "/pgd/latest/reference/nodes#bdr_init_physical", + "bdralter_node_group_option": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_group_option", + "bdralter_node_interface": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_interface", + "bdralter_node_option": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_option", + "bdralter_subscription_enable": "/pgd/latest/reference/nodes-management-interfaces#bdralter_subscription_enable", + "bdralter_subscription_disable": "/pgd/latest/reference/nodes-management-interfaces#bdralter_subscription_disable", + "bdrcreate_node": "/pgd/latest/reference/nodes-management-interfaces#bdrcreate_node", + "bdrcreate_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrcreate_node_group", + "bdrjoin_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrjoin_node_group", + "bdrpart_node": "/pgd/latest/reference/nodes-management-interfaces#bdrpart_node", + "bdrpromote_node": "/pgd/latest/reference/nodes-management-interfaces#bdrpromote_node", + "bdrswitch_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrswitch_node_group", + "bdrwait_for_join_completion": "/pgd/latest/reference/nodes-management-interfaces#bdrwait_for_join_completion", + "bdralter_node_group_config": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_group_config", + "bdrdrop_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrdrop_node_group", + "bdrcreate_proxy": "/pgd/latest/reference/routing#bdrcreate_proxy", + "bdralter_proxy_option": "/pgd/latest/reference/routing#bdralter_proxy_option", + "bdrdrop_proxy": "/pgd/latest/reference/routing#bdrdrop_proxy", + "bdrrouting_leadership_transfer": "/pgd/latest/reference/routing#bdrrouting_leadership_transfer", + "cs.commit-scope-syntax": "/pgd/latest/reference/commit-scopes#commit-scope-syntax", + "cs.commit-scope-groups": "/pgd/latest/reference/commit-scopes#commit-scope-groups", + "cs.any": "/pgd/latest/reference/commit-scopes#any", + "cs.any-not": "/pgd/latest/reference/commit-scopes#any-not", + "cs.majority": "/pgd/latest/reference/commit-scopes#majority", + "cs.majority-not": "/pgd/latest/reference/commit-scopes#majority-not", + "cs.all": "/pgd/latest/reference/commit-scopes#all", + "cs.all-not": "/pgd/latest/reference/commit-scopes#all-not", + "cs.confirmation-level": "/pgd/latest/reference/commit-scopes#confirmation-level", + "cs.on-received": "/pgd/latest/reference/commit-scopes#on-received", + "cs.on-replicated": "/pgd/latest/reference/commit-scopes#on-replicated", + "cs.on-durable": "/pgd/latest/reference/commit-scopes#on-durable", + "cs.on-visible": "/pgd/latest/reference/commit-scopes#on-visible", + "cs.commit-scope-kinds": "/pgd/latest/reference/commit-scopes#commit-scope-kinds", + "cs.group-commit": "/pgd/latest/reference/commit-scopes#group-commit", + "cs.group-commit-parameters": "/pgd/latest/reference/commit-scopes#group-commit-parameters", + "cs.abort-on-parameters": "/pgd/latest/reference/commit-scopes#abort-on-parameters", + "cs.transaction_tracking-settings": "/pgd/latest/reference/commit-scopes#transaction_tracking-settings", + "cs.conflict_resolution-settings": "/pgd/latest/reference/commit-scopes#conflict_resolution-settings", + "cs.commit_decision-settings": "/pgd/latest/reference/commit-scopes#commit_decision-settings", + "cs.camo": "/pgd/latest/reference/commit-scopes#camo", + "cs.degrade-on-parameters": "/pgd/latest/reference/commit-scopes#degrade-on-parameters", + "cs.lag-control": "/pgd/latest/reference/commit-scopes#lag-control", + "cs.lag-control-parameters": "/pgd/latest/reference/commit-scopes#lag-control-parameters", + "cs.synchronous_commit": "/pgd/latest/reference/commit-scopes#synchronous_commit", + "conflict-detection": "/pgd/latest/reference/conflicts#conflict-detection", + "list-of-conflict-types": "/pgd/latest/reference/conflicts#list-of-conflict-types", + "conflict-resolution": "/pgd/latest/reference/conflicts#conflict-resolution", + "list-of-conflict-resolvers": "/pgd/latest/reference/conflicts#list-of-conflict-resolvers", + "default-conflict-resolvers": "/pgd/latest/reference/conflicts#default-conflict-resolvers", + "list-of-conflict-resolutions": "/pgd/latest/reference/conflicts#list-of-conflict-resolutions", + "conflict-logging": "/pgd/latest/reference/conflicts#conflict-logging", + "bdralter_table_conflict_detection": "/pgd/latest/reference/conflict_functions#bdralter_table_conflict_detection", + "bdralter_node_set_conflict_resolver": "/pgd/latest/reference/conflict_functions#bdralter_node_set_conflict_resolver", + "bdralter_node_set_log_config": "/pgd/latest/reference/conflict_functions#bdralter_node_set_log_config", + "bdrcreate_replication_set": "/pgd/latest/reference/repsets-management#bdrcreate_replication_set", + "bdralter_replication_set": "/pgd/latest/reference/repsets-management#bdralter_replication_set", + "bdrdrop_replication_set": "/pgd/latest/reference/repsets-management#bdrdrop_replication_set", + "bdralter_node_replication_sets": "/pgd/latest/reference/repsets-management#bdralter_node_replication_sets", + "bdrreplication_set_add_table": "/pgd/latest/reference/repsets-membership#bdrreplication_set_add_table", + "bdrreplication_set_remove_table": "/pgd/latest/reference/repsets-membership#bdrreplication_set_remove_table", + "bdrreplication_set_add_ddl_filter": "/pgd/latest/reference/repsets-ddl-filtering#bdrreplication_set_add_ddl_filter", + "bdrreplication_set_remove_ddl_filter": "/pgd/latest/reference/repsets-ddl-filtering#bdrreplication_set_remove_ddl_filter", + "pgd_bench": "/pgd/latest/reference/testingandtuning#pgd_bench", + "bdralter_sequence_set_kind": "/pgd/latest/reference/sequences#bdralter_sequence_set_kind", + "bdrextract_timestamp_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_snowflakeid", + "bdrextract_nodeid_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_nodeid_from_snowflakeid", + "bdrextract_localseqid_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_localseqid_from_snowflakeid", + "bdrtimestamp_to_snowflakeid": "/pgd/latest/reference/sequences#bdrtimestamp_to_snowflakeid", + "bdrextract_timestamp_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_timeshard", + "bdrextract_nodeid_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_nodeid_from_timeshard", + "bdrextract_localseqid_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_localseqid_from_timeshard", + "bdrtimestamp_to_timeshard": "/pgd/latest/reference/sequences#bdrtimestamp_to_timeshard", + "bdrgen_ksuuid_v2": "/pgd/latest/reference/sequences#bdrgen_ksuuid_v2", + "bdrksuuid_v2_cmp": "/pgd/latest/reference/sequences#bdrksuuid_v2_cmp", + "bdrextract_timestamp_from_ksuuid_v2": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_ksuuid_v2", + "bdrgen_ksuuid": "/pgd/latest/reference/sequences#bdrgen_ksuuid", + "bdruuid_v1_cmp": "/pgd/latest/reference/sequences#bdruuid_v1_cmp", + "bdrextract_timestamp_from_ksuuid": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_ksuuid", + "bdrautopartition": "/pgd/latest/reference/autopartition#bdrautopartition", + "bdrdrop_autopartition": "/pgd/latest/reference/autopartition#bdrdrop_autopartition", + "bdrautopartition_wait_for_partitions": "/pgd/latest/reference/autopartition#bdrautopartition_wait_for_partitions", + "bdrautopartition_wait_for_partitions_on_all_nodes": "/pgd/latest/reference/autopartition#bdrautopartition_wait_for_partitions_on_all_nodes", + "bdrautopartition_find_partition": "/pgd/latest/reference/autopartition#bdrautopartition_find_partition", + "bdrautopartition_enable": "/pgd/latest/reference/autopartition#bdrautopartition_enable", + "bdrautopartition_disable": "/pgd/latest/reference/autopartition#bdrautopartition_disable", + "internal-functions": "/pgd/latest/reference/autopartition#internal-functions", + "bdrautopartition_create_partition": "/pgd/latest/reference/autopartition#bdrautopartition_create_partition", + "bdrautopartition_drop_partition": "/pgd/latest/reference/autopartition#bdrautopartition_drop_partition", + "bdrcreate_conflict_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrcreate_conflict_trigger", + "bdrcreate_transform_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrcreate_transform_trigger", + "bdrdrop_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrdrop_trigger", + "bdrtrigger_get_row": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_row", + "bdrtrigger_get_committs": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_committs", + "bdrtrigger_get_xid": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid", + "bdrtrigger_get_type": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_type", + "bdrtrigger_get_conflict_type": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_conflict_type", + "bdrtrigger_get_origin_node_id": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_origin_node_id", + "bdrri_fkey_on_del_trigger": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrri_fkey_on_del_trigger", + "tg_name": "/pgd/latest/reference/streamtriggers/rowvariables#tg_name", + "tg_when": "/pgd/latest/reference/streamtriggers/rowvariables#tg_when", + "tg_level": "/pgd/latest/reference/streamtriggers/rowvariables#tg_level", + "tg_op": "/pgd/latest/reference/streamtriggers/rowvariables#tg_op", + "tg_relid": "/pgd/latest/reference/streamtriggers/rowvariables#tg_relid", + "tg_table_name": "/pgd/latest/reference/streamtriggers/rowvariables#tg_table_name", + "tg_table_schema": "/pgd/latest/reference/streamtriggers/rowvariables#tg_table_schema", + "tg_nargs": "/pgd/latest/reference/streamtriggers/rowvariables#tg_nargs", + "tg_argv": "/pgd/latest/reference/streamtriggers/rowvariables#tg_argv", + "bdrautopartition_partitions": "/pgd/latest/reference/catalogs-internal#bdrautopartition_partitions", + "bdrautopartition_rules": "/pgd/latest/reference/catalogs-internal#bdrautopartition_rules", + "bdrddl_epoch": "/pgd/latest/reference/catalogs-internal#bdrddl_epoch", + "bdrevent_history": "/pgd/latest/reference/catalogs-internal#bdrevent_history", + "bdrevent_summary": "/pgd/latest/reference/catalogs-internal#bdrevent_summary", + "bdrnode_config": "/pgd/latest/reference/catalogs-internal#bdrnode_config", + "bdrnode_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_config_summary", + "bdrnode_group_config": "/pgd/latest/reference/catalogs-internal#bdrnode_group_config", + "bdrnode_group_routing_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_config_summary", + "bdrnode_group_routing_info": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_info", + "bdrnode_group_routing_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_summary", + "bdrnode_routing_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_routing_config_summary", + "bdrproxy_config": "/pgd/latest/reference/catalogs-internal#bdrproxy_config", + "bdrproxy_config_summary": "/pgd/latest/reference/catalogs-internal#bdrproxy_config_summary", + "bdrsequence_kind": "/pgd/latest/reference/catalogs-internal#bdrsequence_kind", + "bdrbdr_get_commit_decisions": "/pgd/latest/reference/functions-internal#bdrbdr_get_commit_decisions", + "bdrbdr_track_commit_decision": "/pgd/latest/reference/functions-internal#bdrbdr_track_commit_decision", + "bdrconsensus_kv_fetch": "/pgd/latest/reference/functions-internal#bdrconsensus_kv_fetch", + "bdrconsensus_kv_store": "/pgd/latest/reference/functions-internal#bdrconsensus_kv_store", + "bdrdecode_message_payload": "/pgd/latest/reference/functions-internal#bdrdecode_message_payload", + "bdrdecode_message_response_payload": "/pgd/latest/reference/functions-internal#bdrdecode_message_response_payload", + "bdrdifference_fix_origin_create": "/pgd/latest/reference/functions-internal#bdrdifference_fix_origin_create", + "bdrdifference_fix_session_reset": "/pgd/latest/reference/functions-internal#bdrdifference_fix_session_reset", + "bdrdifference_fix_session_setup": "/pgd/latest/reference/functions-internal#bdrdifference_fix_session_setup", + "bdrdifference_fix_xact_set_avoid_conflict": "/pgd/latest/reference/functions-internal#bdrdifference_fix_xact_set_avoid_conflict", + "bdrdrop_node": "/pgd/latest/reference/functions-internal#bdrdrop_node", + "bdrget_global_locks": "/pgd/latest/reference/functions-internal#bdrget_global_locks", + "bdrget_node_conflict_resolvers": "/pgd/latest/reference/functions-internal#bdrget_node_conflict_resolvers", + "bdrget_slot_flush_timestamp": "/pgd/latest/reference/functions-internal#bdrget_slot_flush_timestamp", + "bdrinternal_alter_sequence_set_kind": "/pgd/latest/reference/functions-internal#bdrinternal_alter_sequence_set_kind", + "bdrinternal_replication_set_add_table": "/pgd/latest/reference/functions-internal#bdrinternal_replication_set_add_table", + "bdrinternal_replication_set_remove_table": "/pgd/latest/reference/functions-internal#bdrinternal_replication_set_remove_table", + "bdrinternal_submit_join_request": "/pgd/latest/reference/functions-internal#bdrinternal_submit_join_request", + "bdrisolation_test_session_is_blocked": "/pgd/latest/reference/functions-internal#bdrisolation_test_session_is_blocked", + "bdrlocal_node_info": "/pgd/latest/reference/functions-internal#bdrlocal_node_info", + "bdrmsgb_connect": "/pgd/latest/reference/functions-internal#bdrmsgb_connect", + "bdrmsgb_deliver_message": "/pgd/latest/reference/functions-internal#bdrmsgb_deliver_message", + "bdrnode_catchup_state_name": "/pgd/latest/reference/functions-internal#bdrnode_catchup_state_name", + "bdrnode_kind_name": "/pgd/latest/reference/functions-internal#bdrnode_kind_name", + "bdrpeer_state_name": "/pgd/latest/reference/functions-internal#bdrpeer_state_name", + "bdrpg_xact_origin": "/pgd/latest/reference/functions-internal#bdrpg_xact_origin", + "bdrrequest_replay_progress_update": "/pgd/latest/reference/functions-internal#bdrrequest_replay_progress_update", + "bdrreset_relation_stats": "/pgd/latest/reference/functions-internal#bdrreset_relation_stats", + "bdrreset_subscription_stats": "/pgd/latest/reference/functions-internal#bdrreset_subscription_stats", + "bdrresynchronize_table_from_node": "/pgd/latest/reference/functions-internal#bdrresynchronize_table_from_node", + "bdrseq_currval": "/pgd/latest/reference/functions-internal#bdrseq_currval", + "bdrseq_lastval": "/pgd/latest/reference/functions-internal#bdrseq_lastval", + "bdrseq_nextval": "/pgd/latest/reference/functions-internal#bdrseq_nextval", + "bdrshow_subscription_status": "/pgd/latest/reference/functions-internal#bdrshow_subscription_status", + "bdrshow_workers": "/pgd/latest/reference/functions-internal#bdrshow_workers", + "bdrshow_writers": "/pgd/latest/reference/functions-internal#bdrshow_writers", + "bdrtaskmgr_set_leader": "/pgd/latest/reference/functions-internal#bdrtaskmgr_set_leader", + "bdrtaskmgr_get_last_completed_workitem": "/pgd/latest/reference/functions-internal#bdrtaskmgr_get_last_completed_workitem", + "bdrtaskmgr_work_queue_check_status": "/pgd/latest/reference/functions-internal#bdrtaskmgr_work_queue_check_status", + "bdrpglogical_proto_version_ranges": "/pgd/latest/reference/functions-internal#bdrpglogical_proto_version_ranges", + "bdrget_min_required_replication_slots": "/pgd/latest/reference/functions-internal#bdrget_min_required_replication_slots", + "bdrget_min_required_worker_processes": "/pgd/latest/reference/functions-internal#bdrget_min_required_worker_processes", + "bdrstat_get_activity": "/pgd/latest/reference/functions-internal#bdrstat_get_activity", + "bdrworker_role_id_name": "/pgd/latest/reference/functions-internal#bdrworker_role_id_name", + "bdrlag_history": "/pgd/latest/reference/functions-internal#bdrlag_history", + "bdrget_raft_instance_by_nodegroup": "/pgd/latest/reference/functions-internal#bdrget_raft_instance_by_nodegroup", + "bdrmonitor_camo_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_camo_on_all_nodes", + "bdrmonitor_raft_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_raft_details_on_all_nodes", + "bdrmonitor_replslots_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_replslots_details_on_all_nodes", + "bdrmonitor_subscription_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_subscription_details_on_all_nodes", + "bdrmonitor_version_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", + "bdrnode_group_member_info": "/pgd/latest/reference/functions-internal#bdrnode_group_member_info", + "bdrcolumn_timestamps_create": "/pgd/latest/reference/clcd#bdrcolumn_timestamps_create" +} diff --git a/product_docs/docs/pge/17/installing/component_locations.mdx b/product_docs/docs/pge/17/installing/component_locations.mdx index 90d1525fda4..4c4a1f70932 100644 --- a/product_docs/docs/pge/17/installing/component_locations.mdx +++ b/product_docs/docs/pge/17/installing/component_locations.mdx @@ -15,19 +15,19 @@ The RPM installers place EDB Postgres Extended Server components in the director | Component | Location | |-----------------------------|--------------------------------| -| Executables | `/usr/edb/pge16/bin` | -| Libraries | `/usr/edb/pge16/lib` | -| Cluster configuration files | `/var/lib/edb-pge/16` | -| Documentation | `/usr/edb/pge16/share/man` | -| Contrib | `/usr/edb/pge16/share/contrib` | -| Data | `/var/lib/edb-pge/16/data` | -| Logs | `/var/log/edb/pge16` | -| Lock files | `/var/lock/edb/pge16` | -| Backup area | `/var/lib/edb-pge/16/backups` | -| Templates | `/usr/edb/pge16/share` | -| Procedural Languages | `/usr/edb/pge16/lib` | -| Development Headers | `/usr/edb/pge16/include` | -| Shared data | `/usr/edb/pge16/share` | +| Executables | `/usr/edb/pge17/bin` | +| Libraries | `/usr/edb/pge17/lib` | +| Cluster configuration files | `/var/lib/edb-pge/17` | +| Documentation | `/usr/edb/pge17/share/man` | +| Contrib | `/usr/edb/pge17/share/contrib` | +| Data | `/var/lib/edb-pge/17/data` | +| Logs | `/var/log/edb/pge17` | +| Lock files | `/var/lock/edb/pge17` | +| Backup area | `/var/lib/edb-pge/17/backups` | +| Templates | `/usr/edb/pge17/share` | +| Procedural Languages | `/usr/edb/pge17/lib` | +| Development Headers | `/usr/edb/pge17/include` | +| Shared data | `/usr/edb/pge17/share` | ## Debian/Ubuntu Locations @@ -35,9 +35,9 @@ The Debian package manager places EDB Postgres Extended Server components in the | Component | Location | |-----------------------------|------------------------------------| -| Executables | `/usr/lib/edb-pge/16/bin` | -| Libraries | `/usr/lib/edb-pge/16/lib` | -| Cluster configuration files | `/var/lib/edb-pge/16/main` | -| Data | `/var/lib/edb-pge/16/main` | +| Executables | `/usr/lib/edb-pge/17/bin` | +| Libraries | `/usr/lib/edb-pge/17/lib` | +| Cluster configuration files | `/var/lib/edb-pge/17/main` | +| Data | `/var/lib/edb-pge/17/main` | | Logs | `/var/log/edb-pge/` | -| Lock files | `/var/lock/edb/pge16` | +| Lock files | `/var/lock/edb/pge17` | diff --git a/product_docs/docs/pge/17/upgrading/major_upgrade.mdx b/product_docs/docs/pge/17/upgrading/major_upgrade.mdx index c8845a87db4..711706ffbce 100644 --- a/product_docs/docs/pge/17/upgrading/major_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/major_upgrade.mdx @@ -29,7 +29,7 @@ If a problem occurs during the upgrade process, you can [revert to the previous ## Worked example -This worked example upgrades an EDB Postgres Extended Server 15 database to EDB Postgres Extended Server 16. +This worked example upgrades an EDB Postgres Extended Server 16 database to EDB Postgres Extended Server 17. !!!note You can perform major upgrades of EDB Postgres Extended Server instances in the same way you upgrade an EDB Postgres Advanced Server installation. If you need more information about the pg_upgrade utility, command line options, troubleshooting, and more, see [Upgrading an installation with pg_upgrade](/epas/latest/upgrading/major_upgrade/). @@ -40,7 +40,7 @@ Use [pg_dumpall](https://www.postgresql.org/docs/current/app-pg-dumpall.html), [ ### Installing the target EDB Postgres Extended Server version -[Install EDB Postgres Extended Server](../installing/) version 16. Only install the packages. Don't perform any other configurations. +[Install EDB Postgres Extended Server](../installing/) version 17. Only install the packages. Don't perform any other configurations. ### Creating a target server @@ -49,20 +49,20 @@ If you don't want to create a new target instance but want to reuse an existing 1. As postgres, create an empty directory for the new server: ``` - mkdir /var/lib/edb-pge/16/upgrade_target + mkdir /var/lib/edb-pge/17/upgrade_target ``` 1. As root, ensure the postgres user owns the directory: ``` - sudo chown postgres /var/lib/edb-pge/16/upgrade_target - sudo chgrp postgres /var/lib/edb-pge/16/upgrade_target + sudo chown postgres /var/lib/edb-pge/17/upgrade_target + sudo chgrp postgres /var/lib/edb-pge/17/upgrade_target ``` 1. As postgres, initialize the new server: ``` - /usr/lib/edb-pge/16/bin/initdb -D /var/lib/edb-pge/16/upgrade_target + /usr/lib/edb-pge/17/bin/initdb -D /var/lib/edb-pge/17/upgrade_target ``` This command initializes a CONFIG directory with all configuration files for the encrypted server. @@ -72,19 +72,19 @@ If you don't want to create a new target instance but want to reuse an existing 1. Start the target server: ``` - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade_target start + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade_target start ``` !!!note You can also start the server with the `logfile` option enabled to print errors into a logfile: - `/usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade_target -l logfile start` + `/usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade_target -l logfile start` In this case, ensure the postgres user has rights to write to the log directory. 1. Connect to the server: ``` - /usr/lib/edb-pge/16/bin/psql -p 5432 + /usr/lib/edb-pge/17/bin/psql -p 5432 ``` !!!note @@ -97,8 +97,8 @@ If you don't want to create a new target instance but want to reuse an existing 1. Stop both the source and target servers: ``` - /usr/lib/edb-pge/15/bin/pg_ctl -D /var/lib/edb-pge/15/upgrade-source stop - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-target stop + /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-source stop + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade-target stop ``` 1. To test for incompatibilities, run the `pg_upgrade` command in check mode. @@ -106,7 +106,7 @@ If you don't want to create a new target instance but want to reuse an existing With `-b` and `-B`, specify the source and target BIN directories. With `-d` and `-D`, specify the source and target CONFIG directories: ``` - /usr/lib/edb-pge/16/bin/pg_upgrade -b /usr/lib/edb-pge/15/bin -B /usr/lib/edb-pge/16/bin -d /var/lib/edb-pge/15/upgrade-source -D /var/lib/edb-pge/16/upgrade-target --check + /usr/lib/edb-pge/17/bin/pg_upgrade -b /usr/lib/edb-pge/16/bin -B /usr/lib/edb-pge/17/bin -d /var/lib/edb-pge/16/upgrade-source -D /var/lib/edb-pge/17/upgrade-target --check ``` !!!note @@ -115,19 +115,19 @@ If you don't want to create a new target instance but want to reuse an existing 1. To copy data from the source server to the target server, run the `pg_upgrade` command in normal mode: ``` - /usr/lib/edb-pge/16/bin/pg_upgrade -b /usr/lib/edb-pge/15/bin -B /usr/lib/edb-pge/16/bin -d /var/lib/edb-pge/15/upgrade-source -D /var/lib/edb-pge/16/upgrade-target + /usr/lib/edb-pge/17/bin/pg_upgrade -b /usr/lib/edb-pge/16/bin -B /usr/lib/edb-pge/17/bin -d /var/lib/edb-pge/16/upgrade-source -D /var/lib/edb-pge/17/upgrade-target ``` 1. Start the target server: ``` - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-target start + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade-target start ``` 1. Connect to the target database server: ``` - /usr/lib/edb-as/16/bin/psql -p 5432 + /usr/lib/edb-as/17/bin/psql -p 5432 ``` 1. Perform a spot check to ensure the databases, tables, schemas, and resources you had in the unencrypted server are available in the new server. For example, list all databases, explore the database objects, views, and so on. @@ -141,7 +141,7 @@ After you verify that pg_upgrade migrated the data successfully, and the service 1. Clean up the database and its statistics: ``` - /usr/lib/edb-pge/16/bin/vacuumdb --all --analyze-in-stages + /usr/lib/edb-pge/17/bin/vacuumdb --all --analyze-in-stages ``` 1. Remove all data files of the unencrypted server with the script generated by `pg_upgrade`: diff --git a/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx b/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx index 18cc18753e7..4ae55beda71 100644 --- a/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx @@ -22,10 +22,10 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve sudo apt-get install ``` - For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 16, run: + For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 17, run: ```shell - sudo apt-get install edb-postgresextended-16 + sudo apt-get install edb-postgresextended-17 ``` !!!Note @@ -38,19 +38,19 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve 1. To finalize the upgrade, restart the server. Replace `` with the path to the data directory of the server or servers you're upgrading: ```shell - /usr/lib/edb-pge/16/bin/pg_ctl -D restart + /usr/lib/edb-pge/17/bin/pg_ctl -D restart ``` For example: ```shell - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade restart + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade restart ``` 1. Verify the expected database version is running by connecting to psql: ```shell - /usr/lib/edb-pge/16/bin/psql + /usr/lib/edb-pge/17/bin/psql ``` Check the server version: @@ -60,6 +60,6 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve __OUTPUT__ server_version -------------------------------------------------------------------- - 16.3 (EDB Postgres Extended Server 16.3.0) (Ubuntu 0:16.3-1.jammy) + 17.2 (EDB Postgres Extended Server 17.2.0) (Ubuntu 0:17.2-1.jammy) (1 row) ``` diff --git a/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx b/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx index c5b91cb3063..821e2790674 100644 --- a/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx @@ -24,10 +24,10 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on sudo dnf check-update ``` - For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 16, run: + For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 17, run: ```shell - sudo dnf check-update edb-postgresextended16 + sudo dnf check-update edb-postgresextended17 ``` !!!Note @@ -36,16 +36,16 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on 1. Once you've figured the name and version of the package you want to install, use `dnf update` to install the package: ```shell - sudo dnf update edb-postgresextended16 + sudo dnf update edb-postgresextended17 __OUTPUT__ ================================================================================ Package Arch Version Repository Size ================================================================================ Upgrading: - edb-postgresextended16 x86_64 16.3-2.el9 enterprisedb-enterprise 1.7 M - edb-postgresextended16-contrib x86_64 16.3-2.el9 enterprisedb-enterprise 724 k - edb-postgresextended16-libs x86_64 16.3-2.el9 enterprisedb-enterprise 330 k - edb-postgresextended16-server x86_64 16.3-2.el9 enterprisedb-enterprise 6.8 M + edb-postgresextended17 x86_64 17.2-1.el9 enterprisedb-enterprise 1.7 M + edb-postgresextended17-contrib x86_64 17.2-1.el9 enterprisedb-enterprise 724 k + edb-postgresextended17-libs x86_64 17.2-1.el9 enterprisedb-enterprise 330 k + edb-postgresextended17-server x86_64 17.2-1.el9 enterprisedb-enterprise 6.8 M Transaction Summary ================================================================================ @@ -60,28 +60,28 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on ```shell y __OUTPUT__ - edb-postgresextended16-16.3-2.el9.x86_64 - edb-postgresextended16-contrib-16.3-2.el9.x86_64 - edb-postgresextended16-libs-16.3-2.el9.x86_64 - edb-postgresextended16-server-16.3-2.el9.x86_64 + edb-postgresextended17-17.2-1.el9.x86_64 + edb-postgresextended17-contrib-17.2-1.el9.x86_64 + edb-postgresextended17-libs-17.2-1.el9.x86_64 + edb-postgresextended17-server-17.2-1.el9.x86_64 ``` 1. To finalize the upgrade, restart the server. Replace `` with the path to the data directory of the server or servers you're upgrading: ```shell - /usr/edb/pge16/bin/pg_ctl -D restart + /usr/edb/pge17/bin/pg_ctl -D restart ``` For example: ```shell - /usr/edb/pge16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade restart + /usr/edb/pge17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade restart ``` 1. Verify the expected database version is running by connecting to psql: ```shell - /usr/edb/pge16/bin/psql + /usr/edb/pge17/bin/psql ``` Check the server version: @@ -91,6 +91,6 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on __OUTPUT__ server_version -------------------------------------------- - 16.3 (EDB Postgres Extended Server 16.3.0) + 17.2 (EDB Postgres Extended Server 17.2.0) ``` \ No newline at end of file diff --git a/product_docs/docs/tpa/23/architecture-M1.mdx b/product_docs/docs/tpa/23/architecture-M1.mdx index 64718467585..848001483ce 100644 --- a/product_docs/docs/tpa/23/architecture-M1.mdx +++ b/product_docs/docs/tpa/23/architecture-M1.mdx @@ -5,11 +5,8 @@ originalFilePath: architecture-M1.md --- -A Postgres cluster with one or more active locations, each with the same -number of Postgres nodes and an extra Barman node. Optionally, there can -also be a location containing only a witness node, or a location -containing only a single node, even if the active locations have more -than one. +A Postgres cluster with a single primary node and physical replication +to a number of standby nodes including backup and failover management. This architecture is suitable for production and is also suited to testing, demonstrating and learning due to its simplicity and ability to @@ -19,25 +16,53 @@ If you select subscription-only EDB software with this architecture it will be sourced from EDB Repos 2.0 and you will need to [provide a token](reference/edb_repositories/). -## Application and backup failover - -The M1 architecture implements failover management in that it ensures -that a replica will be promoted to take the place of the primary should -the primary become unavailable. However it *does not provide any -automatic facility to reroute application traffic to the primary*. If -you require, automatic failover of application traffic you will need to -configure this at the application itself (for example using multi-host -connections) or by using an appropriate proxy or load balancer and the -facilities offered by your selected failover manager. - -The above is also true of the connection between the backup node and the -primary created by TPA. The backup will not be automatically adjusted to -target the new primary in the event of failover, instead it will remain -connected to the original primary. If you are performing a manual -failover and wish to connect the backup to the new primary, you may -simply re-run `tpaexec deploy`. If you wish to automatically change the -backup source, you should implement this using your selected failover -manager as noted above. +## Failover management + +The M1 architecture always includes a failover manager. Supported +options are repmgr, EDB Failover Manager (EFM) and Patroni. In all +cases, the failover manager will be configured by default to ensure that +a replica will be promoted to take the place of the primary should the +primary become unavailable. + +### Application failover + +The M1 architecture does not generally provide an automatic facility to +reroute application traffic to the primary. There are several ways you +can add this capability to your cluster. + +In TPA: + +- If you choose repmgr as the failover manager and enable PgBouncer, you + can include the `repmgr_redirect_pgbouncer: true` hash under + `cluster_vars` in `config.yml`. This causes repmgr to automatically + reconfigure PgBouncer to route traffic to the new primary on failover. + +- If you choose Patroni as the failover manager and enable PgBouncer, + Patroni will automatically reconfigure PgBouncer to route traffic to + the new primary on failover. + +- If you choose EFM as the failover manager, you can use the + `efm_conf_settings` hash under `cluster_vars` in `config.yml` to + [configure EFM to use a virtual IP address + (VIP)](/efm/latest/04_configuring_efm/05_using_vip_addresses/). This + is an additional IP address which will always route to the primary + node. + +- Place an appropriate proxy or load balancer between the cluster and + you application and use a [TPA hook](tpaexec-hooks/) to configure + your selected failover manager to update it with the route to the new + primary on failover. + +- Handle failover at the application itself, for example by using + multi-host connection strings. + +### Backup failover + +TPA does not configure any kind of 'backup failover'. If the Postgres +node from which you are backing up is down, backups will simply halt +until the node is back online. To manually connect the backup to the new +primary, edit `config.yml` to add the `backup` hash to the new primary +instance and re-run `tpaexec deploy`. ## Cluster configuration @@ -78,18 +103,18 @@ More detail on the options is provided in the following section. #### Additional Options -| Parameter | Description | Behaviour if omitted | -| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | -| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | -| `--location-names` | A space-separated list of location names. The number of active locations is equal to the number of names supplied, minus one for each of the witness-only location and the single-node location if they are requested. | A single location called "main" is used. | -| `--primary-location` | The location where the primary server will be. Must be a member of `location-names`. | The first listed location is used. | -| `--data-nodes-per-location` | A number from 1 upwards. In each location, one node will be configured to stream directly from the cluster's primary node, and the other nodes, if present, will stream from that one. | Defaults to 2. | -| `--witness-only-location` | A location name, must be a member of `location-names`. | No witness-only location is added. | -| `--single-node-location` | A location name, must be a member of `location-names`. | No single-node location is added. | -| `--enable-haproxy` | 2 additional nodes will be added as a load balancer layer.
Only supported with Patroni as the failover manager. | HAproxy nodes will not be added to the cluster. | -| `--enable-pgbouncer` | PgBouncer will be configured in the Postgres nodes to pool connections for the primary. | PgBouncer will not be configured in the cluster. | -| `--patroni-dcs` | Select the Distributed Configuration Store backend for patroni.
Only option is `etcd` at this time.
Only supported with Patroni as the failover manager. | Defaults to `etcd`. | -| `--efm-bind-by-hostname` | Enable efm to use hostnames instead of IP addresses to configure the cluster `bind.address`. | Defaults to use IP addresses | +| Parameter | Description | Behaviour if omitted | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | +| `--location-names` | A space-separated list of location names. The number of locations is equal to the number of names supplied. | A single location called "main" is used. | +| `--primary-location` | The location where the primary server will be. Must be a member of `location-names`. | The first listed location is used. | +| `--data-nodes-per-location` | A number from 1 upwards. In each location, one node will be configured to stream directly from the cluster's primary node, and the other nodes, if present, will stream from that one. | Defaults to 2. | +| `--witness-only-location` | A location name, must be a member of `location-names`. This location will be populated with a single witness node only. | No witness-only location is added. | +| `--single-node-location` | A location name, must be a member of `location-names`. This location will be populated with a single data node only. | No single-node location is added. | +| `--enable-haproxy` | Two additional nodes will be added as a load balancer layer.
Only supported with Patroni as the failover manager. | HAproxy nodes will not be added to the cluster. | +| `--enable-pgbouncer` | PgBouncer will be configured in the Postgres nodes to pool connections for the primary. | PgBouncer will not be configured in the cluster. | +| `--patroni-dcs` | Select the Distributed Configuration Store backend for patroni.
Only option is `etcd` at this time.
Only supported with Patroni as the failover manager. | Defaults to `etcd`. | +| `--efm-bind-by-hostname` | Enable efm to use hostnames instead of IP addresses to configure the cluster `bind.address`. | Defaults to use IP addresses |

diff --git a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx index 948cf5d1aba..4dd318ac627 100644 --- a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx +++ b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx @@ -5,10 +5,10 @@ originalFilePath: architecture-PGD-Always-ON.md --- -!!! Note +!!!Note + This architecture is for Postgres Distributed 5 only. If you require PGD 4 or 3.7 please use [BDR-Always-ON](architecture-BDR-Always-ON/). -!!! EDB Postgres Distributed 5 in an Always-ON configuration, suitable for use in test and production. @@ -85,9 +85,9 @@ data centre that provides a level of redundancy, in whatever way this definition makes sense to your use case. For example, AWS regions, your own data centres, or any other designation to identify where your servers are hosted. +!!! - -!!! Note Note for AWS users +!!! Note for AWS users If you are using TPA to provision an AWS cluster, the locations will be mapped to separate availability zones within the `--region` you diff --git a/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx b/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx new file mode 100644 index 00000000000..a9b2f88d5d4 --- /dev/null +++ b/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx @@ -0,0 +1,103 @@ +--- +description: Configuring a PGD Lightweight cluster with TPA. +title: PGD Lightweight +originalFilePath: architecture-PGD-Lightweight.md + +--- + +!!! Note + + This architecture is for Postgres Distributed 5 only. + If you require PGD 4 or 3.7 please use [BDR-Always-ON](../architecture-BDR-Always-ON/). + + EDB Postgres Distributed 5 in a Lightweight configuration, + suitable for use in test and production. + + This architecture requires an EDB subscription. + All software will be sourced from [EDB Repos 2.0](edb_repositories/). + +## Cluster configuration + +### Overview of configuration options + +An example invocation of `tpaexec configure` for this architecture +is shown below. + +```bash + tpaexec configure ~/clusters/pgd-lw \ + --architecture Lightweight \ + --edb-postgres-extended 15 \ + --platform aws --instance-type t3.micro \ + --distribution Debian \ + --location-names main dr \ +``` + +You can list all available options using the help command. + +```bash +tpaexec configure --architecture Lightweight --help +``` + +The table below describes the mandatory options for PGD-Always-ON +and additional important options. +More detail on the options is provided in the following section. + +#### Mandatory Options + +| Options | Description | +| ----------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `--architecture` (`-a`) | Must be set to `Lightweight` | +| Postgres flavour and version (e.g. `--postgresql 15`) | A valid [flavour and version specifier](../tpaexec-configure/#postgres-flavour-and-version). | + +

+ +#### Additional Options + +| Options | Description | Behaviour if omitted | +| -------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | +| `--location-names` | A space-separated list of location names. The number of locations is equal to the number of names supplied. | TPA will configure a single location with three data nodes. | +| `--add-proxy-nodes-per-location` | The number of proxy nodes in each location. | PGD-proxy will be installed on each data node. | +| `--bdr-database` | The name of the database to be used for replication. | Defaults to `bdrdb`. | +| `--enable-pgd-probes` | Enable http(s) api endpoints for pgd-proxy such as `health/is-ready` to allow probing proxy's health. | Disabled by default. | +| `--proxy-listen-port` | The port on which proxy nodes will route traffic to the write leader. | Defaults to 6432 | +| `--proxy-read-only-port` | The port on which proxy nodes will route read-only traffic to shadow nodes. | Defaults to 6433 | + +

+ +### More detail about Lightweight configuration + +A PGD Lightweight cluster comprises 2 locations, with a primary active location containing 2 nodes and a disaster recovery (dr) location with a single node. + +Location names for the cluster are specified as +`--location-names primary dr`. A location represents an independent +data centre that provides a level of redundancy, in whatever way +this definition makes sense to your use case. For example, AWS +regions, your own data centres, or any other designation to identify +where your servers are hosted. + +!!! Note for AWS users + + If you are using TPA to provision an AWS cluster, the locations will + be mapped to separate availability zones within the `--region` you + specify. + You may specify multiple `--regions`, but TPA does not currently set + up VPC peering to allow instances in different regions to + communicate with each other. For a multi-region cluster, you will + need to set up VPC peering yourself. + +By default, every data node (in every location) will also run PGD-Proxy +for connection routing. To create separate PGD-Proxy instances instead, +use `--add-proxy-nodes-per-location 3` (or however many proxies you want +to add). + +Global routing will make every proxy route to a single write leader, elected amongst all available data nodes across all locations. + +You may optionally specify `--bdr-database dbname` to set the name of +the database with BDR enabled (default: bdrdb). + +You may optionally specify `--enable-pgd-probes [{http, https}]` to +enable http(s) api endpoints that will allow to easily probe proxy's health. + +You may also specify any of the options described by +[`tpaexec help configure-options`](../tpaexec-configure/). diff --git a/product_docs/docs/tpa/23/reference/barman.mdx b/product_docs/docs/tpa/23/reference/barman.mdx index 80f7546e683..d9c8c10d1e4 100644 --- a/product_docs/docs/tpa/23/reference/barman.mdx +++ b/product_docs/docs/tpa/23/reference/barman.mdx @@ -90,3 +90,121 @@ them to each other's authorized_keys file. The postgres user must be able to ssh to the barman server in order to archive WAL segments (if configured), and the barman user must be able to ssh to the Postgres instance to take or restore backups. + +## `barman` and `barman_role` Postgres users + +TPA will create two Postgres users, `barman` and `barman_role`. + +TPA versions `<23.35` created the `barman` Postgres user as a `superuser`. + +Beginning with `23.35` the `barman` user is created with `NOSUPERUSER`, +so any re-deploys on existing clusters will remove the `superuser` attribute +from the `barman` Postgres user. Instead, the `barman_role` is granted the +required set of privileges and the `barman` user is granted `barman_role` membership. + +This avoids granting the `superuser` attribute to the `barman` user, using the set +of privileges provided in the [Barman Manual](https://docs.pgbarman.org/release/latest/#postgresql-connection). + +## Shared Barman server + +!!! Note + + To use the shared Barman functionality with clusters created using a + TPA version earlier than 23.35, you must: + a) upgrade to a version of TPA that supports creating + shared Barman instances. + b) after upgrading TPA, run deploy on $first-cluster so TPA can make + necessary config changes for subsequent clusters to run smoothly + against the shared Barman node. + +Some deployments may want to share a single Barman server for multiple +clusters. Shared Barman server deployment within +tpaexec is supported via the `barman_shared` setting that can be set via +`vars:` under the Barman server instance for the given cluster config +that plans to use an existing Barman server. `barman_shared` is a +boolean variable so possible values are true and false(default). When +making any changes to the Barman config in a shared scenario, you must +ensure that configurations across multiple clusters remain in sync so as +to avoid a scenario where one cluster adds a specific configuration and +a second cluster overrides it. + +A typical workflow for using a shared Barman server across multiple +clusters is described below. + +1. Create a TPA cluster with an instance that has `barman` role + (call it 'first-cluster' for this example). + +2. In the second cluster (second-cluster for example), reference this + particular Barman instance from $clusters/first-cluster as a shared + Barman server instance and use `bare` as platform so we are not + trying to create a new Barman instance when running provision. Also + specify the IP address of the Barman instance that this cluster can + use to access it. + + ```yml + - Name: myBarman + node: 5 + role: + - barman + platform: bare + ip_address: x.x.x.x + vars: + barman_shared: true + ``` + +3. Once the second-cluster is provisioned but before running deploy, + make sure that it can access the Barman server instance via ssh. You + can allow this access by copying second-cluster's public key to + Barman server instance via `ssh-copy-id` and then do an ssh to + make sure you can login without having to specify the password. + + ```bash + # add first-cluster's key to the ssh-agent + $ cd $clusters/first-cluster + $ ssh-add id_first-clutser + $ cd $clusters/second-cluster + $ ssh-keyscan -t rsa,ecdsa -4 $barman-server-ip >> tpa_known_hosts + $ ssh-copy-id -i id_second-cluster.pub -o 'UserKnownHostsFile=tpa_known_hosts' $user@$barman-server-ip + $ ssh -F ssh_config $barman-server + ``` + +4. Copy the Barman user's keys from first-cluster to second-cluster + ```bash + $ mkdir $clusters/second-cluster/keys + $ cp $clusters/first-cluster/keys/id_barman* clusters/second-cluster/keys + ``` + +5. Run `tpaexec deploy $clusters/second-cluster` + +!!! Note + + You must use caution when setting up clusters that share a Barman + server instance. There are a number of important aspects you must + consider before attempting such a setup. For example: + + 1. Making sure that no two instances in any of the clusters sharing a + Barman server use the same name. + 2. Barman configuration and settings otherwise should remain in sync in + all the clusters using a common Barman server to avoid a scenario + where one cluster sets up a specific configuration and the others do + not either because the configuration is missing or uses a different + value. + 3. Version of Postgres on instances being backed up across different + clusters needs to be the same. + 4. Different clusters using a common Barman server cannot specify + different versions of Barman packages when attempting to override + default. + +Some of these may be addressed in a future release as we continue to +improve the shared Barman server support. + +!!!Warning + +Be extremely careful when deprovisioning clusters sharing a common +Barman node. Especially where the first cluster that deployed Barman +uses non-bare platform. Deprovisioning the first cluster that +originally provisioned and deployed Barman will effectively leave +other clusters sharing the Barman node in an inconsistent state +because the Barman node will already have been deprovisioned by the +first cluster and it won't exist anymore. +!!! diff --git a/product_docs/docs/tpa/23/reference/compliance.mdx b/product_docs/docs/tpa/23/reference/compliance.mdx new file mode 100644 index 00000000000..54b6d864555 --- /dev/null +++ b/product_docs/docs/tpa/23/reference/compliance.mdx @@ -0,0 +1,166 @@ +--- +description: Generating standards-compliant clusters with TPA +title: Compliance +originalFilePath: compliance.md + +--- + +TPA can generate configurations designed to make it easy for a +cluster to comply with the STIG or CIS standards. If you pass +`--compliance stig` or `--compliance cis` to `tpaexec configure`, +TPA will: + +- Check that other options are compatible with the appropriate + standard. +- Add various entries to the generated `config.yml`, including + marking that this is a cluster meant to comply with a particular + standard and setting Postgres configuration as required by + the standard. +- Adjust some deployment tasks to enforce compliance. +- Run checks at the end of deployment. + +The deploy-time checks can +be skipped by giving the option `--excluded_tasks=compliance` to `tpaexec +deploy`. This feature is intended for testing only, when using a test +system on which full compliance is impossible (for example, +because SSL certificates are not available). + +There are some situations in which TPA will intentionally fail to +comply with the selected standard; these are documented under Exceptions +below. + +## STIG + +STIG compliance is indicated by the `--compliance stig` option to +`tpaexec configure`. + +### Option compatibility + +STIG compliance requires the `bare` platform and the `epas` flavour. +It requires the RedHat OS with version 8 or 9. + +### Settings in config.yml + +The following entry is added to `cluster_vars` to use the SQL/Protect +feature of EDB Postgres Advanced Server: + +``` + extra_postgres_extensions: [ 'sql_protect' ] +``` + +The following entries are added to `cluster_vars` to force clients +to use SSL authentication: + +``` + hba_force_hostssl: True + hba_force_certificate_auth: True + hba_cert_authentication_map: sslmap +``` + +The following entries are added to `cluster_vars` to set GUCs in +postgresql.conf: + +``` + tcp_keepalives_idle: 10 + tcp_keepalives_interval: 10 + tcp_keepalives_count: 10 + log_destination: "stderr" + postgres_log_file_mode: "0600" +``` + +The following entries are added to `postgres_conf_settings` in +`cluster_vars` to set GUCs in postgresql.conf: + +``` + edb_audit: "xml" + edb_audit_statement: "all" + edb_audit_connect: "all" + edb_audit_disconnect: "all" + statement_timeout: 1000 + client_min_messages: "ERROR" +``` + +### Deployment differences + +During deployment, TPA will set connection limits for the database users +it creates, corresponding to the number of connections that are needed +for normal operation. As each user is set up, it will also check that +an SSL client certificate has been provided for it. + +### Providing client ssl certificates + +STIG requires DOD-approved ssl certificates for client connections. +These certificates can't be generated by TPA and therefore must be +supplied. When setting up authentication for a user from a +node in the cluster, TPA will look for a certificate/key pair on the +node. The certificate and key should be in files called .crt +and .key in the directory given by the `ssl_client_cert_dir` +setting. The default for this setting is `/`, so the files would be, +for example, `/barman.crt` and `/barman.key` when the `barman` user is +being set up. + +### Final checks + +At the end of deployment, TPA will check that the server has FIPS +enabled. + +### Exceptions + +If you select EFM as the failover manager, TPA will configure password +authentication for the EFM user. This goes against the STIG requirement +that all TCP connections use certificate authentication. The reason for +this exception is that EFM does not support certificate authentication. + +## CIS + +CIS compliance is indicated by the `--compliance cis` option to `tpaexec +configure`. + +### Settings in config.yml + +The following entries are added to `cluster_vars` to set GUCs in +postgresql.conf: + +``` + log_connections: "on" + log_disconnections: "on" +``` + +The following entry is added to `cluster_vars` to enable required +extensions: + +``` + extra_postgres_extensions: ["passwordcheck", "pgaudit"] +``` + +The following entry is added to `cluster_vars` to set the umask for +the postgres OS user: + +``` + extra_bash_rc_lines: "umask 0077" +``` + +The following entries are added to `postgres_conf_settings` in +`cluster_vars` to set GUCs in postgresql.conf: + +``` + + log_error_verbosity: "verbose" + log_line_prefix: "'%m [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '" + log_replication_commands: "on" + temp_file_limit: "1GB" +``` + +### Final checks + +At the end of deployment, TPA will check that the server has FIPS +enabled. + +### Exceptions + +TPA does not support pgBackRest as mentioned in the CIS specification. +Instead TPA installs Barman. + +TPA does not install and configure `set_user` as required by the CIS +specification. This is because preventing logon by the Postgres user +would leave TPA unable to connect to, and configure, the database. diff --git a/product_docs/docs/tpa/23/reference/efm.mdx b/product_docs/docs/tpa/23/reference/efm.mdx index 6f262752296..ef4eaf194f7 100644 --- a/product_docs/docs/tpa/23/reference/efm.mdx +++ b/product_docs/docs/tpa/23/reference/efm.mdx @@ -24,6 +24,18 @@ to the cluster. See the [EFM documentation](https://www.enterprisedb.com/docs/efm/latest/) for more details on EFM configuration. +## efm_user_password_encryption + +Must be either `scram-sha-256` or `md5` + +Set `efm_user_password_encryption` to control the `auth-method` for the +`efm` Postgres user's `auth-method` in `pg_hba.conf` as well as the algorithm +used when generating it's encrypted password. + +```yaml +efm_user_password_encryption: 'scram-sha-256' # or can be set to `md5` +``` + ## efm_conf_settings You can use `efm_conf_settings` to set any parameters, whether recognised diff --git a/product_docs/docs/tpa/23/reference/harp.mdx b/product_docs/docs/tpa/23/reference/harp.mdx index 281f9e5515a..27dfdc5a9ed 100644 --- a/product_docs/docs/tpa/23/reference/harp.mdx +++ b/product_docs/docs/tpa/23/reference/harp.mdx @@ -13,7 +13,7 @@ to `harp`, which is the default for BDR-Always-ON clusters. You must provide the `harp-manager` and `harp-proxy` packages. Please contact EDB to obtain access to these packages. -## Configuring HARP +## Variables for HARP configuration See the [HARP documentation](https://www.enterprisedb.com/docs/pgd/4/harp/04_configuration/) for more details on HARP configuration. @@ -41,6 +41,7 @@ for more details on HARP configuration. | `harp_proxy_max_client_conn` | `75` | Maximum number of client connections accepted by harp-proxy (`max_client_conn`) | | `harp_ssl_password_command` | None | a custom command that should receive the obfuscated sslpassword in the stdin and provide the handled sslpassword via stdout. | | `harp_db_request_timeout` | `10s` | similar to dcs -> request_timeout, but for connection to the database itself. | +| `harp_local_etcd_only` | None | limit harp manager endpoints list to only contain the local etcd node instead of all etcd nodes | You can use the [harp-config hook](../tpaexec-hooks/#harp-config) @@ -114,7 +115,7 @@ provide api endpoints to monitor service's health. The variable can contain these keys: -``` +```yaml enable: false secure: false cert_file: "/etc/tpa/harp_proxy/harp_proxy.crt" diff --git a/product_docs/docs/tpa/23/reference/pgbouncer.mdx b/product_docs/docs/tpa/23/reference/pgbouncer.mdx index 567d840caac..8e36b4528d6 100644 --- a/product_docs/docs/tpa/23/reference/pgbouncer.mdx +++ b/product_docs/docs/tpa/23/reference/pgbouncer.mdx @@ -1,16 +1,28 @@ --- -description: Adding pgbouncer to your Postgres cluster. -title: Configuring pgbouncer +description: Adding PgBouncer to your Postgres cluster. +title: Configuring PgBouncer originalFilePath: pgbouncer.md --- -TPA will install and configure pgbouncer on instances whose `role` +TPA will install and configure PgBouncer on instances whose `role` contains `pgbouncer`. -By default, pgbouncer listens for connections on port 6432 and forwards -connections to `127.0.0.1:5432` (which may be either Postgres or -[haproxy](haproxy/), depending on the architecture). +By default, PgBouncer listens for connections on port 6432 and, if no +`pgbouncer_backend` is specified, forwards connections to +`127.0.0.1:5432` (which may be either Postgres or [haproxy](haproxy/), +depending on the architecture). + +!!!Note Using PgBouncer to route traffic to the primary + +If you are using the M1 architecture with repmgr you can set +`repmgr_redirect_pgbouncer: true` hash under `cluster_vars` to have +PgBouncer connections directed to the primary. The PgBouncer will be +automatically updated on failover to route to the new primary. You +should use this option in combination with setting `pgbouncer_backend` +to the primary instance name to ensure that the cluster is initially +deployed with PgBouncer configured to route to the primary. +!!! You can set the following variables on any `pgbouncer` instance. diff --git a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx index 801d59d2ece..08c3fb4b241 100644 --- a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx +++ b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx @@ -24,7 +24,7 @@ are supported. container of the target operating system and uses that system's package manager to resolve dependencies and download all necessary packages. The required Docker setup for download-packages is the same as that for - [using Docker as a deployment platform](../platform-docker). + [using Docker as a deployment platform](../platform-docker/). ## Usage diff --git a/product_docs/docs/tpa/23/rel_notes/index.mdx b/product_docs/docs/tpa/23/rel_notes/index.mdx index 9a3fd7f6f59..651be5a8139 100644 --- a/product_docs/docs/tpa/23/rel_notes/index.mdx +++ b/product_docs/docs/tpa/23/rel_notes/index.mdx @@ -3,6 +3,7 @@ title: Trusted Postgres Architect release notes navTitle: Release notes description: Release notes for Trusted Postgres Architect and later navigation: + - tpa_23.35_rel_notes - tpa_23.34.1_rel_notes - tpa_23.34_rel_notes - tpa_23.33_rel_notes @@ -36,6 +37,7 @@ The Trusted Postgres Architect documentation describes the latest version of Tru | Trusted Postgres Architect version | Release Date | |---|---| +| [23.35](./tpa_23.35_rel_notes) | 25 Nov 2024 | | [23.34.1](./tpa_23.34.1_rel_notes) | 09 Sep 2024 | | [23.34](./tpa_23.34_rel_notes) | 22 Aug 2024 | | [23.33](./tpa_23.33_rel_notes) | 24 Jun 2024 | diff --git a/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml deleted file mode 100644 index a3c080918cd..00000000000 --- a/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml +++ /dev/null @@ -1,142 +0,0 @@ -product: Trusted Postgres Architect -version: 23.35 -date: 29 October 2024 -intro: | - New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: -highlights: | - - More Trust - - More Postgres - - More Architect -relnotes: -- details: | - `PermissionsStartOnly` has been deprecated and is now achieved via `ExecStartPost=+/bin/bash...` syntax. - relnote: Remove deprecated `PermissionStartOnly` in postgres.service.j2 template - impact: low - jira: - - TPA-762 - type: Change -- details: | - Fixed a bug whereby the test that ensures the current pgd-proxy configuration - matches the expected configuration would fail for version < 5.5.0. This fix ensures - that TPA won't try to query configuration keys added in version 5.5.0. - impact: low - jira: - - TPA-819 - relnote: Fix tpaexec test for pgd-proxy config verification - type: Bug Fix -- details: | - The PostGIS package will automatically be added when a user specifies `postgis` - as an entry in either `postgres_extensions` or the list of extensions named under - `postgres_databases`. Also enables the CRB (Code Ready Builder) repository for - RHEL-compatible distributions so PostGIS dependencies can be installed. - impact: low - jira: - - TPA-771 - relnote: Add `postgis` to list of recognized extensions - type: Change -- details: | - Certain required privileges are granted to Postgres role, `barman_role`, - which is then granted to the `barman` Postgres user. This avoids creating the - `barman` user as a superuser. This role can also be granted to other Postgres - users by adding it to their `granted_roles` list using `postgres/createuser`. The - `barman_role` is created as part of the Barman tasks; if Barman is not used, this - role will not be created. Therefore, the task that grants privileges to this role - is only executed if the `barman_role` username is in the list of Postgres users - that are created. The ''barman'' user now has `NOSUPERUSER` explicitly specified - as a role attribute. If a cluster was deployed with a previous TPA version (which - created the ''barman'' user as a superuser), deploying with this version will - remove the `superuser` role attribute from the `barman` user. - impact: low - jira: - - TPA-148 - - TPA-818 - relnote: The `barman` Postgres user should not be a superuser - type: Change -- details: | - A `primary_slot_name` is configured on the primary node to ensure the - old primary uses a physical slot for replication during an EFM switchover. However, - ''bdr_init_physical'' attempts to use it for node initialisation and hangs indefinitely - since the slot does not exist in a PGD installation. This `primary_slot_name` - is now conditionally set explicitly when the `failover_manager` is EFM to avoid - setting it unnecessarily. - impact: low - jira: - - TPA-712 - relnote: '`primary_slot_name` added for EFM compatibility interferes with `bdr_init_physical` ' - type: Bug Fix -- details: | - If the `pgdcli_package_version` is specified in `config.yml`, the `bash-completion` - package is incorrectly named because the `packages_for` filter erroneously appends - the `pgdcli_package_version` to the package name. This results in an attempt - to download a nonexistant package. The `bash-completion` package is now appended - to the list after the `packages_for` filter, since it''s version is independent - from the `pgdcli_package_version`. - impact: low - jira: - - TPA-794 - relnote: Download correct `bash-completion` package version - type: Bug Fix -- details: | - Fixed an issue whereby in some cases error messages would be repeated - even after successful tasks. - impact: low - jira: - - TPA-812 - relnote: Clear error message stack after each task - type: Bug Fix -- details: | - Improve postgres-monitor script to better manage recoverable errors and - add retries on network errors to ensure that it won''t return failure when it - just didn't allow enough time for postgres service to be fully started. - impact: low - jira: - - TPA-796 - relnote: Improve postgres-monitor script - type: Change -- details: | - Fixed an issue whereby new replicas in patroni clusters would fail with - errors related to replication slots. - impact: low - jira: - - TPA-792 - - TPA-781 - relnote: Enable new replicas in patroni clusters - type: Bug Fix -- details: | - A support ticket questioned why the `pemserver` and `barman` nodes are - added to the `Allowed node host list` in EFM when they are not relevant to EFM - functions. Refactored the task that writes the `efm.node` configuration to only - include those nodes that have `efm` in their list of roles. - impact: low - jira: - - TPA-817 - relnote: Only add nodes with `efm` role to cluster `efm.nodes` file - type: Change -- details: | - 'If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec - configure`, `pem-agent` is added twice to the `barman` node if it is also a `witness`. Fixed - by by consolidating both `if` statements together to only evaluate the conditions - once. ' - impact: low - jira: - - TPA-793 - relnote: Add `pem-agent` role on barman nodes at most once for M1 architecture - type: Bug Fix -- details: | - Fixed a bug whereby if the user excluded the `pkg` selector, later pem-related - tasks would fail because the pem_python_executable fact had not been set. - impact: low - jira: - - TPA-814 - relnote: set pem_python_executable outside pkg role - type: Bug Fix -- details: | - The `--efm-install-path` and `--efm-cluster-name` flags are set when a PEM - server is registered on an EFM node. The `Streaming Replication`, `Failover - Manager Node Status` and `Failover Manager Cluster Info` probes are enabled when - a PEM agent is registered on an EFM node. ' - impact: low - jira: - - TPA-586 - relnote: Enable EFM probes when a PEM agent is registered on an EFM node - type: Change \ No newline at end of file diff --git a/product_docs/docs/tpa/23/rel_notes/src/meta.yml b/product_docs/docs/tpa/23/rel_notes/src/meta.yml index 124ea56dc04..6a6b069cdad 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/meta.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/meta.yml @@ -62,3 +62,4 @@ precursor: date: 21 Feb 2023 - version: "23.1-11" date: 21 Jun 2023 to 31 Jan 2023 + diff --git a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml new file mode 100644 index 00000000000..2a3d85e7a6d --- /dev/null +++ b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml @@ -0,0 +1,283 @@ +product: Trusted Postgres Architect +version: 23.35 +date: 25 November 2024 +intro: | + New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: +highlights: | + - Options for STIG/CIS compliance. + - Support for PGD Lightweight architecture + - Postgis is now a recognized extension. + - Docker `configure` creates named networks with static IP addresses. + - Support for RedHat Enterprise Linux 9 for ARM architectures. + - Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. +relnotes: + - details: >- + `PermissionsStartOnly` has been deprecated and is now achieved via + `ExecStartPost=+/bin/bash...` syntax + impact: low + jira: + - TPA-762 + relnote: Remove deprecated `PermissionStartOnly` in postgres.service.j2 template + type: Change + - details: >- + Fixed a bug whereby the test that ensures the current pgd-proxy + configuration matches the expected configuration would fail for version < + 5.5.0. This fix ensures that TPA won't try to query configuration keys + added in version 5.5.0. + impact: low + jira: + - TPA-819 + relnote: Fix tpaexec test for pgd-proxy config verification + type: Bug Fix + - details: >- + The PostGIS package will automatically be added when a user specifies + `postgis` as an entry in either `postgres_extensions` or the list of + extensions named under `postgres_databases`. Also enables the CRB (Code + Ready Builder) repository for RHEL-compatible distributions so PostGIS + dependencies can be installed. + impact: low + jira: + - TPA-771 + relnote: Add `postgis` to list of recognized extensions + type: Enhancement + - details: >- + Certain required privileges are granted to Postgres role, `barman_role`, + which is then granted to the `barman` Postgres user. This avoids creating + the `barman` user as a superuser. This role can also be granted to other + Postgres users by adding it to their `granted_roles` list using + `postgres/createuser`. The `barman_role` is created as part of the Barman + tasks; if Barman is not used, this role will not be created. Therefore, + the task that grants privileges to this role is only executed if the + `barman_role` username is in the list of Postgres users that are created. + The 'barman' user now has `NOSUPERUSER` explicitly specified as a role + attribute. If a cluster was deployed with a previous TPA version (which + created the 'barman' user as a superuser), deploying with this version + will remove the `superuser` role attribute from the `barman` user. + impact: low + jira: + - TPA-148 + - TPA-818 + relnote: The `barman` Postgres user is no longer a superuser + type: Change + - details: >- + Add new optional var `harp_local_etcd_only` available when using etcd with + HARP. This option tells HARP manager to connect to local etcd node. This + recommendation follows the best practices learnt by doing the same when + `bdr` as consensus procotol is being used. The default mode of adding + multiple endpoints can lead to performance issues in some cases. This + option is added to give more control to the user. + impact: low + jira: + - TPA-821 + relnote: Add new option `harp_local_etcd_only` when using etcd with HARP + type: Change + - details: >- + A `primary_slot_name` is configured on the primary node to ensure the old + primary uses a physical slot for replication during an EFM switchover. + However, 'bdr_init_physical' attempts to use it for node initialisation + and hangs indefinitely since the slot does not exist in a PGD + installation. This `primary_slot_name` is now conditionally set explicitly + when the `failover_manager` is EFM to avoid setting it unnecessarily. + impact: low + jira: + - TPA-712 + relnote: >- + Fix case where `primary_slot_name` added for EFM compatibility interferes + with `bdr_init_physical` + type: Bug Fix + - details: >- + If the `pgdcli_package_version` is specified in `config.yml`, the + `bash-completion` package is incorrectly named because the `packages_for` + filter erroneously appends the `pgdcli_package_version` to the package + name. This results in an attempt to download a nonexistant package. The + `bash-completion` package is now appended to the list after the + `packages_for` filter, since it's version is independent from the + `pgdcli_package_version`. + impact: low + jira: + - TPA-794 + relnote: Download correct `bash-completion` package version + type: Bug Fix + - details: >- + TPA is now able to generate a PGD Lightweight architecture comprised of + three nodes in two locations (2 nodes in Primary and one in Disaster + Recovery) designed to ease migrations from physical replication. Users can + now run `tpaexec configure lw -a Lightweight --postgresql 15`. + impact: medium + jira: + - TPA-838 + relnote: Add support for PGD Lightweight architecture + type: Enhancement + - details: >- + TPA now clears the error message stack after each task to ensure messages + are not spuriously repeated + impact: low + jira: + - TPA-812 + relnote: >- + Fix an issue whereby in some cases error messages would be repeated even + after successful tasks. + type: Bug Fix + - details: >- + Improve postgres-monitor script to better manage recoverable errors and + add retries on network errors to ensure that it won't return failure when + it just didn't allow enough time for postgres service to be fully started. + impact: low + jira: + - TPA-796 + relnote: Improve postgres-monitor script + type: Change + - details: >- + Fixed an issue whereby new replicas in Patroni clusters would fail with + errors related to replication slots. + impact: low + jira: + - TPA-792 + - TPA-781 + relnote: Fix issue that prevented the addition of replicas to Patroni clusters + type: Bug Fix + - details: >- + Previously the `pemserver` and `barman` nodes were added to the `Allowed + node host list` in EFM when they were not relevant to EFM functions. + Refactored the task that writes the `efm.node` configuration to only + include those nodes that have `efm` in their list of roles. + impact: low + jira: + - TPA-817 + relnote: Only add nodes with `efm` role to cluster `efm.nodes` file + type: Change + - details: >- + If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec + configure`, `pem-agent` is added twice to the `barman` node if it is also + a `witness`. Fixed by consolidating both `if` statements together to only + evaluate the conditions once. + impact: low + jira: + - TPA-793 + relnote: Add `pem-agent` role on barman nodes at most once for M1 architecture + type: Bug Fix + - details: >- + Fixed a bug whereby if the user excluded the `pkg` selector, later + PEM-related tasks would fail because the `pem_python_executable` fact had + not been set. + impact: low + jira: + - TPA-814 + relnote: Set `pem_python_executable` outside of the `pkg` role + type: Bug Fix + - details: >- + The `--efm-install-path` and `--efm-cluster-name` flags are set when a PEM + server is registered on an EFM node. The `Streaming Replication`, + `Failover Manager Node Status` and `Failover Manager Cluster Info` probes + are enabled when a PEM agent is registered on an EFM node. + impact: low + jira: + - TPA-586 + relnote: Enable EFM probes when a PEM agent is registered on an EFM node + type: Enhancement + - details: >- + TPA now supports command-line options to create a cluster configured to + conform to many of the requirements of the STIG and CIS security + standards. These options cause TPA to set postgresql.conf settings as + defined in the relevant standards, to install required extensions, to + configure other aspects of system behaviour such as filesystem permissions + and user connection limits, and to check for other requirements such as + FIPS crypto standards which TPA can't directly impose. The clusters thus + generated are not certified by TPA to conform to the standards, but much + of the groundwork of creating a conforming cluster is now automated. + impact: high + jira: + - TPA-366 + - TPA-836 + - TPA-837 + relnote: Support STIG/CIS compliance + type: Enhancement + - details: >- + The configure command will now automatically add a named network and + static IP addresses to config.yml when Docker is the selected platform. + The network name is the same as the cluster name and the address range + follows the existing semantics of the --network option with the exception + that only one subnet is used for the whole cluster rather than one per + location. If a subnet prefix is not specified by the user, TPA will + attempt to select a prefix which results in a subnet large enough to fit + the whole cluster. The key `ip_address` may now be used to specify a + static IP for a Docker instance as long as a named network is specified in + the config.yml. + impact: medium + jira: + - TPA-261 + - TPA-407 + - TPA-434 + relnote: Have `configure` create a user-defined network on Docker + type: Enhancement + - details: >- + Packages are now published targeting RHEL 9 ARM64, and TPA supports + deployments using this architecture and OS. Also updated the list of + supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. + The default `instance_type` for ARM64 EC2 instances has been updated from + `a1` to `t4g`, which is the current generation processor available for + burstable general purpose workloads. + impact: low + jira: + - TPA-780 + relnote: Support RedHat Enterprise Linux 9 for ARM architectures + type: Enhancement + - details: >- + Clusters can be configured to use PostgreSQL, EDB Postgres Extended and + EDB Postgres Advanced Server version 17. Barman no longer needs to install + the postgres server package to get the `pg_receivewal` binary when using + EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the + binary has been added to the client package for these versions. TPA raises + an architecture error when a cluster is configured with `repmgr` as the + failover_manager as it is not available for Postgres 17. Updated + documentation to reflect supported versions. + impact: low + jira: + - TPA-803 + relnote: >- + Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced + Server 17 + type: Enhancement + - details: >- + When using an existing Barman node as a backup node in a new cluster, + users can set `barman_shared: true` in the Barman instance's vars with the + platform set to `bare` and other information supplied as usual for bare + instances. This change allows TPA to skip some configuration steps that + would otherwise fail due to usermod issues, as the Barman user already has + running processes from previous deployments. The shared Barman instance is + treated as a bare instance, so the required access, including the Barman + user's access to the target PostgreSQL instances, must be already in + place. Copying the Barman user's keys from the original cluster to the new + cluster can be used to achieve this, see the Barman section of the TPA + documentation for detailed information. + impact: medium + jira: + - TPA-777 + relnote: >- + Added experimental support for using an existing Barman node as backup + node in new cluster + type: Enhancement + - details: >- + Expose a configurable `efm_user_password_encryption` variable which should + be set to either `'md5'` or `'scram-sha-256'` depending on user + requirements. This controls the `auth-method` for the `efm` Postgres user + in `pg_hba.conf` and the algorithm used for generating it's encrypted + password. In clusters deployed with `compliance` configured to `stig`, the + 'efm' Postgres user's `auth-method` in `pg_hba.conf` will be set to + `scram-sha-256` since FIPS-enabled operating systems do not allow `md5` to + be used. + impact: low + jira: + - TPA-832 + - TPA-836 + relnote: Make `password_encryption` algorithm for `efm` Postgres user configurable. + type: Enhancement + - details: >- + When using the `--hostnames-from` option to `tpaexec configure`, you can + now include two ip addresses on each line, which will be included in the + generated config.yml as public_ip and private_ip. + impact: low + jira: + - TPA-841 + relnote: Allow multiple addresses to be supplied with hostnames + type: Enhancement \ No newline at end of file diff --git a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx new file mode 100644 index 00000000000..6f8bbb20dd3 --- /dev/null +++ b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx @@ -0,0 +1,58 @@ +--- +title: Trusted Postgres Architect 23.35 release notes +navTitle: Version 23.35 +--- + +Released: 25 November 2024 + +New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: + +## Highlights + +- Options for STIG/CIS compliance. +- Support for PGD Lightweight architecture +- Postgis is now a recognized extension. +- Docker `configure` creates named networks with static IP addresses. +- Support for RedHat Enterprise Linux 9 for ARM architectures. +- Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. + +## Enhancements + + + + + + + + + + + + +
DescriptionAddresses
Support STIG/CIS compliance

TPA now supports command-line options to create a cluster configured to conform to many of the requirements of the STIG and CIS security standards. These options cause TPA to set postgresql.conf settings as defined in the relevant standards, to install required extensions, to configure other aspects of system behaviour such as filesystem permissions and user connection limits, and to check for other requirements such as FIPS crypto standards which TPA can't directly impose. The clusters thus generated are not certified by TPA to conform to the standards, but much of the groundwork of creating a conforming cluster is now automated.

Add support for PGD Lightweight architecture

TPA is now able to generate a PGD Lightweight architecture comprised of three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) designed to ease migrations from physical replication. Users can now run tpaexec configure lw -a Lightweight --postgresql 15.

Have configure create a user-defined network on Docker

The configure command will now automatically add a named network and static IP addresses to config.yml when Docker is the selected platform. The network name is the same as the cluster name and the address range follows the existing semantics of the --network option with the exception that only one subnet is used for the whole cluster rather than one per location. If a subnet prefix is not specified by the user, TPA will attempt to select a prefix which results in a subnet large enough to fit the whole cluster. The key ip_address may now be used to specify a static IP for a Docker instance as long as a named network is specified in the config.yml.

Added experimental support for using an existing Barman node as backup node in new cluster

When using an existing Barman node as a backup node in a new cluster, users can set barman_shared: true in the Barman instance's vars with the platform set to bare and other information supplied as usual for bare instances. This change allows TPA to skip some configuration steps that would otherwise fail due to usermod issues, as the Barman user already has running processes from previous deployments. The shared Barman instance is treated as a bare instance, so the required access, including the Barman user's access to the target PostgreSQL instances, must be already in place. Copying the Barman user's keys from the original cluster to the new cluster can be used to achieve this, see the Barman section of the TPA documentation for detailed information.

Add postgis to list of recognized extensions

The PostGIS package will automatically be added when a user specifies postgis as an entry in either postgres_extensions or the list of extensions named under postgres_databases. Also enables the CRB (Code Ready Builder) repository for RHEL-compatible distributions so PostGIS dependencies can be installed.

Enable EFM probes when a PEM agent is registered on an EFM node

The --efm-install-path and --efm-cluster-name flags are set when a PEM server is registered on an EFM node. The Streaming Replication, Failover Manager Node Status and Failover Manager Cluster Info probes are enabled when a PEM agent is registered on an EFM node.

Support RedHat Enterprise Linux 9 for ARM architectures

Packages are now published targeting RHEL 9 ARM64, and TPA supports deployments using this architecture and OS. Also updated the list of supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default instance_type for ARM64 EC2 instances has been updated from a1 to t4g, which is the current generation processor available for burstable general purpose workloads.

Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17

Clusters can be configured to use PostgreSQL, EDB Postgres Extended and EDB Postgres Advanced Server version 17. Barman no longer needs to install the postgres server package to get the pg_receivewal binary when using EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added to the client package for these versions. TPA raises an architecture error when a cluster is configured with repmgr as the failover_manager as it is not available for Postgres 17. Updated documentation to reflect supported versions.

Make password_encryption algorithm for efm Postgres user configurable.

Expose a configurable efm_user_password_encryption variable which should be set to either 'md5' or 'scram-sha-256' depending on user requirements. This controls the auth-method for the efm Postgres user in pg_hba.conf and the algorithm used for generating it's encrypted password. In clusters deployed with compliance configured to stig, the 'efm' Postgres user's auth-method in pg_hba.conf will be set to scram-sha-256 since FIPS-enabled operating systems do not allow md5 to be used.

Allow multiple addresses to be supplied with hostnames

When using the --hostnames-from option to tpaexec configure, you can now include two ip addresses on each line, which will be included in the generated config.yml as public_ip and private_ip.

+ + +## Changes + + + + + + + +
DescriptionAddresses
Remove deprecated PermissionStartOnly in postgres.service.j2 template

PermissionsStartOnly has been deprecated and is now achieved via ExecStartPost=+/bin/bash... syntax

The barman Postgres user is no longer a superuser

Certain required privileges are granted to Postgres role, barman_role, which is then granted to the barman Postgres user. This avoids creating the barman user as a superuser. This role can also be granted to other Postgres users by adding it to their granted_roles list using postgres/createuser. The barman_role is created as part of the Barman tasks; if Barman is not used, this role will not be created. Therefore, the task that grants privileges to this role is only executed if the barman_role username is in the list of Postgres users that are created. The 'barman' user now has NOSUPERUSER explicitly specified as a role attribute. If a cluster was deployed with a previous TPA version (which created the 'barman' user as a superuser), deploying with this version will remove the superuser role attribute from the barman user.

Add new option harp_local_etcd_only when using etcd with HARP

Add new optional var harp_local_etcd_only available when using etcd with HARP. This option tells HARP manager to connect to local etcd node. This recommendation follows the best practices learnt by doing the same when bdr as consensus procotol is being used. The default mode of adding multiple endpoints can lead to performance issues in some cases. This option is added to give more control to the user.

Improve postgres-monitor script

Improve postgres-monitor script to better manage recoverable errors and add retries on network errors to ensure that it won't return failure when it just didn't allow enough time for postgres service to be fully started.

Only add nodes with efm role to cluster efm.nodes file

Previously the pemserver and barman nodes were added to the Allowed node host list in EFM when they were not relevant to EFM functions. Refactored the task that writes the efm.node configuration to only include those nodes that have efm in their list of roles.

+ + +## Bug Fixes + + + + + + + + + +
DescriptionAddresses
Fix tpaexec test for pgd-proxy config verification

Fixed a bug whereby the test that ensures the current pgd-proxy configuration matches the expected configuration would fail for version < 5.5.0. This fix ensures that TPA won't try to query configuration keys added in version 5.5.0.

Fix case where primary_slot_name added for EFM compatibility interferes with bdr_init_physical

A primary_slot_name is configured on the primary node to ensure the old primary uses a physical slot for replication during an EFM switchover. However, 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely since the slot does not exist in a PGD installation. This primary_slot_name is now conditionally set explicitly when the failover_manager is EFM to avoid setting it unnecessarily.

Download correct bash-completion package version

If the pgdcli_package_version is specified in config.yml, the bash-completion package is incorrectly named because the packages_for filter erroneously appends the pgdcli_package_version to the package name. This results in an attempt to download a nonexistant package. The bash-completion package is now appended to the list after the packages_for filter, since it's version is independent from the pgdcli_package_version.

Fix an issue whereby in some cases error messages would be repeated even after successful tasks.

TPA now clears the error message stack after each task to ensure messages are not spuriously repeated

Fix issue that prevented the addition of replicas to Patroni clusters

Fixed an issue whereby new replicas in Patroni clusters would fail with errors related to replication slots.

Add pem-agent role on barman nodes at most once for M1 architecture

If --enable-pem and --enable-pg-backup-api are passed to tpaexec configure, pem-agent is added twice to the barman node if it is also a witness. Fixed by consolidating both if statements together to only evaluate the conditions once.

Set pem_python_executable outside of the pkg role

Fixed a bug whereby if the user excluded the pkg selector, later PEM-related tasks would fail because the pem_python_executable fact had not been set.

+ + diff --git a/product_docs/docs/tpa/23/tpaexec-configure.mdx b/product_docs/docs/tpa/23/tpaexec-configure.mdx index a7988cc550c..98374c8dee3 100644 --- a/product_docs/docs/tpa/23/tpaexec-configure.mdx +++ b/product_docs/docs/tpa/23/tpaexec-configure.mdx @@ -118,18 +118,34 @@ configuration. You must edit config.yml to specify multiple regions. ### Network configuration +!!!Note + +These options are not meaningful for the "bare" platform, where +TPA will not alter the network configuration of existing servers. +!!! + By default, each cluster will be configured with a number of randomly selected `/28` subnets from the CIDR range `10.33.0.0/16`, depending on the selected architecture. Specify `--network 192.168.0.0/16` to assign subnets from a different network. - -**Note:** On AWS clusters, this corresponds to the VPC CIDR. +On AWS clusters, this corresponds to the VPC CIDR. See [aws](platform-aws/#vpc-required) documentation for details. Specify `--subnet-prefix 26` to assign subnets of a different size, /26 instead of /28 in this case. +!!!Note + +When the "docker" platform is selected, TPA will always place the +entire cluster in a single subnet regardless of the architecture. This +subnet is generated according to the logic described here with the +exception that if the `subnet-prefix` is not specified, TPA will +automatically select a subnet size large enough to accomodate the number +of instances in +`config.yaml`. +!!! + Specify `--no-shuffle-subnets` to allocate subnets from the start of the network CIDR range, without randomisation, e.g. `10.33.0.0/28`, then `10.33.0.16/28` and so on. @@ -138,9 +154,6 @@ Specify `--exclude-subnets-from ` to exclude subnets that are already used in existing cluster config.yml files. You can specify this argument multiple times for each directory. -**Note:** These options are not meaningful for the "bare" platform, where -TPA will not alter the network configuration of existing servers. - ### Instance type Specify `--instance-type ` to select an instance type. @@ -173,6 +186,8 @@ with one name per line. The file must contain at least as many valid hostnames as there are instances in your cluster. Each line may contain an optional IP address after the name; if present, this address will be set as the `ip_address` for the corresponding instance in `config.yml`. +If two ip addresses are present, the first will be set as `public_ip` +and the second as `private_ip`. Use `--hostnames-pattern '…pattern…'` to limit the selection to lines matching an egrep pattern. @@ -247,7 +262,7 @@ details. #### Postgres flavour and version TPA supports PostgreSQL, EDB Postgres Extended, and EDB Postgres -Advanced Server (EPAS) versions 11 through 16. +Advanced Server (EPAS) versions 11 through 17. You must specify both the flavour (or distribution) and major version of Postgres to install, for example: @@ -437,6 +452,15 @@ cluster folder to a different tpa host, ensure that you export the associated vault password on the new machine's system keyring. vault password can be displayed via `tpaexec show-vault `. +## Security standards compliance + +Use the `--compliance stig` or `--compliance cis` options to generate +a cluster with configuration suitable for complying with the STIG or CIS +standard. See [Compliance](reference/compliance/) for details. Note that these +options do not guarantee that the cluster fulfills the relevant +standard; they only cause TPA to generate a configuration designed to +comply with those aspects of the standard that can be controlled by TPA. + ## Examples Let's see what happens when we run the following command: diff --git a/product_docs/docs/tpa/23/tpaexec-hooks.mdx b/product_docs/docs/tpa/23/tpaexec-hooks.mdx index 5fccd1f9597..d9df23785c8 100644 --- a/product_docs/docs/tpa/23/tpaexec-hooks.mdx +++ b/product_docs/docs/tpa/23/tpaexec-hooks.mdx @@ -1,6 +1,6 @@ --- navTitle: Deployment hooks -description: Extending TPA with hooks to execute arbitrary Anisible tasks. +description: Extending TPA with hooks to execute arbitrary Ansible tasks. title: TPA hooks originalFilePath: tpaexec-hooks.md diff --git a/scripts/source/process-tpa-docs-auto.sh b/scripts/source/process-tpa-docs-auto.sh index cb853508d1b..4af57a39a13 100755 --- a/scripts/source/process-tpa-docs-auto.sh +++ b/scripts/source/process-tpa-docs-auto.sh @@ -44,7 +44,7 @@ node $DESTINATION_CHECKOUT/scripts/source/merge-indexes.mjs \ "$SOURCE_CHECKOUT/docs/src/reference/index.mdx" \ >> $SOURCE_CHECKOUT/files-to-ignore.txt -rsync -av --delete --exclude="*.md" --exclude="architectures" --exclude="templates" --exclude-from=$SOURCE_CHECKOUT/files-to-ignore.txt src/ $DESTINATION_CHECKOUT/product_docs/docs/tpa/$TPAVERSION/ +rsync -av --delete --exclude="*.md" --exclude="architectures" --exclude="templates" --exclude="rel_notes" --exclude-from=$SOURCE_CHECKOUT/files-to-ignore.txt src/ $DESTINATION_CHECKOUT/product_docs/docs/tpa/$TPAVERSION/ # Tidy up rm -rf $SOURCE_CHECKOUT diff --git a/src/components/icon/iconNames.js b/src/components/icon/iconNames.js index 0626110cef1..03065363fb3 100644 --- a/src/components/icon/iconNames.js +++ b/src/components/icon/iconNames.js @@ -101,7 +101,6 @@ const iconNames = { INSTANCES: "Instances", INTEGRATION: "Integration", KNIGHT: "Knight", - KUBERNETES: "Kubernetes", LAPTOP_CONFIG: "LaptopConfig", LEADER: "Leader", LEARNING: "Learning", @@ -129,7 +128,6 @@ const iconNames = { PLANNER: "Planner", PLAY_CIRCLE: "PlayCircle", PLUS: "Plus", - POSTGRESQL: "Postgresql", PREFERENCES: "Preferences", PRESENTATION: "Presentation", PROCESS: "Process", diff --git a/src/components/icon/index.js b/src/components/icon/index.js index c971507e7bf..d9334a242d9 100644 --- a/src/components/icon/index.js +++ b/src/components/icon/index.js @@ -7,13 +7,18 @@ import * as logosIcons from "@enterprisedb/icons/logos"; import * as ebd_postgres_aiIcons from "@enterprisedb/icons/edb_logos"; function IconContainer({ - circle, - circleClassName, - circleDiameter, - circleAutoMargin, + circle = false, + circleClassName = "", + circleDiameter = 100, + circleAutoMargin = true, iconName: name = "dottedbox", ...props }) { + props = Object.assign( + {}, + { className: "dottedbox", width: 100, height: 100 }, + props, + ); const iconNameParts = name.split("/"); const iconCategory = iconNameParts.length === 1 ? "" : iconNameParts[0]; const iconName = iconNameParts.length === 1 ? name : iconNameParts[1]; @@ -52,16 +57,6 @@ const Icon = ({ category, name, ...props }) => { return ; }; -IconContainer.defaultProps = { - className: "dottedbox", - circleClassName: "", - circleDiameter: 100, - circleAutoMargin: true, - circle: false, - width: 100, - height: 100, -}; - export { iconNames }; export default IconContainer; diff --git a/src/components/layout.js b/src/components/layout.js index 0ec5c1a655f..a0c97a624d1 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -112,9 +112,8 @@ const Layout = ({ h3: ( props, // eslint-disable-next-line jsx-a11y/heading-has-content ) =>

, - img: ( - props, // eslint-disable-next-line jsx-a11y/alt-text - ) => ( + img: (props) => ( + // eslint-disable-next-line jsx-a11y/alt-text ( ); const BannerIconDivider = ({ iconName, headingText }) => ( - +
  {headingText} - +
); const BannerDivider = ({ headingText }) => ( - +
{headingText} - +
); const Page = () => { @@ -173,7 +173,7 @@ const Page = () => {
{updates.slice(0, 2).map((update) => ( -
+