From aa3e577bc121e9c1860b8916b28982c8437a2665 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Tue, 5 Nov 2024 14:03:11 +0000 Subject: [PATCH 01/17] Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/reference/index.json | 1 + product_docs/docs/pgd/5.6/reference/index.mdx | 1 + product_docs/docs/pgd/5.6/reference/nodes.mdx | 102 +++++++++++++----- 3 files changed, 76 insertions(+), 28 deletions(-) diff --git a/product_docs/docs/pgd/5.6/reference/index.json b/product_docs/docs/pgd/5.6/reference/index.json index bef1d9c6d28..e50fc64ec2b 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -187,6 +187,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", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index a35a63d0a51..9b3c24cc942 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -261,6 +261,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) 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 +``` From 96bc2e3428098138c98f4e6d212d5910b76c4f8e Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Fri, 1 Nov 2024 20:06:37 +0000 Subject: [PATCH 02/17] Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- product_docs/docs/pgd/5.6/known_issues.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/product_docs/docs/pgd/5.6/known_issues.mdx b/product_docs/docs/pgd/5.6/known_issues.mdx index a6aad74ae7b..e8e13f6cb51 100644 --- a/product_docs/docs/pgd/5.6/known_issues.mdx +++ b/product_docs/docs/pgd/5.6/known_issues.mdx @@ -49,7 +49,6 @@ 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. Details of other design or implementation [limitations](planning/limitations) are also available. From 76b48fbacf4ecaa9ee3d27f7f11bc8095be9cf39 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 7 Nov 2024 12:13:10 +0000 Subject: [PATCH 03/17] Update known issues for BFILE Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/known_issues.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/product_docs/docs/pgd/5.6/known_issues.mdx b/product_docs/docs/pgd/5.6/known_issues.mdx index e8e13f6cb51..2d61b8aa3dc 100644 --- a/product_docs/docs/pgd/5.6/known_issues.mdx +++ b/product_docs/docs/pgd/5.6/known_issues.mdx @@ -51,4 +51,6 @@ To modify a commit scope safely, use [`bdr.alter_commit_scope`](/pgd/latest/refe - 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. From 5fe8e252dae60c55b73a23931c151e92dca94303 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Fri, 8 Nov 2024 15:53:51 -0500 Subject: [PATCH 04/17] Replace 'SYNCHRONOUS_COMMIT' with 'SYNCHRONOUS COMMIT' in 5.6 docs (#6172) * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan * replaced in commit-scope-rules.mdx * Replaced in degrading.mdx. * Replaced in synchronous commit page. * Replaced in references. * Resolving conflict * Update product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx Co-authored-by: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Dj Walker-Morgan Co-authored-by: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> --- .../5.6/commit-scopes/commit-scope-rules.mdx | 8 +- .../docs/pgd/5.6/commit-scopes/degrading.mdx | 16 +- .../5.6/commit-scopes/synchronous_commit.mdx | 18 +- .../docs/pgd/5.6/reference/commit-scopes.mdx | 16 +- product_docs/docs/pgd/5/reference/index.json | 352 ++++++++++++++++++ 5 files changed, 382 insertions(+), 28 deletions(-) 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..8e4a5e7b0a5 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/reference/commit-scopes.mdx b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx index 1c2c7378946..4768eecd452 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 ); ``` @@ -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/reference/index.json b/product_docs/docs/pgd/5/reference/index.json index fbce200c01e..f88be0ce9be 100644 --- a/product_docs/docs/pgd/5/reference/index.json +++ b/product_docs/docs/pgd/5/reference/index.json @@ -1,4 +1,5 @@ { +<<<<<<< HEAD "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", @@ -348,4 +349,355 @@ "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" +======= + "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" +>>>>>>> b676c968f5 (Removed alias designation and added explanation in Details.) } \ No newline at end of file From d592886dbfa61f850991e5a3d64e875bae409796 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:56:05 +0000 Subject: [PATCH 05/17] DOCS-1109-document-himesh-bdr-wait_node_confirm_lsn (#6228) * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan * bdr.wait_node_confirm_lsn added (and more table formatting in functions) Signed-off-by: Dj Walker-Morgan * Update product_docs/docs/pgd/5.6/reference/functions.mdx * added timout and moved privilege info Signed-off-by: Dj Walker-Morgan * Updated according to comments Signed-off-by: Dj Walker-Morgan --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- .../docs/pgd/5.6/reference/functions.mdx | 224 +++++++++++------- .../docs/pgd/5.6/reference/index.json | 1 + product_docs/docs/pgd/5.6/reference/index.mdx | 1 + .../pgd/5.6/security/pgd-predefined-roles.mdx | 1 + 4 files changed, 138 insertions(+), 89 deletions(-) diff --git a/product_docs/docs/pgd/5.6/reference/functions.mdx b/product_docs/docs/pgd/5.6/reference/functions.mdx index c7ff9881a58..39436fa4a49 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_superuser` 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 e50fc64ec2b..172600ecabf 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", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index 9b3c24cc942..72977f33312 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) 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..8f537d96032 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. From 0c7b990212fd0de8f94d16ae37ba2b733977fb71 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Wed, 13 Nov 2024 14:01:41 +0000 Subject: [PATCH 06/17] Add bdr.wait_node_confirm_lsn to the bdr_application permissions Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx | 1 + 1 file changed, 1 insertion(+) 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 8f537d96032..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 @@ -151,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 From dda7330ff4d9c8532cb6e1a95ac02a69efdfced4 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:54:07 +0000 Subject: [PATCH 07/17] DOCS-1084 pgd postgres 17 support (and DOCS- (#6215) * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Added description to decoding worker. Signed-off-by: Dj Walker-Morgan * Updated compatibility info and presentation Signed-off-by: Dj Walker-Morgan * Include RHEL 9 Signed-off-by: Dj Walker-Morgan * Fix heading Signed-off-by: Dj Walker-Morgan * typo fix Signed-off-by: Dj Walker-Morgan * Add arm caveats for rhel 9 on arm64 Signed-off-by: Dj Walker-Morgan * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- product_docs/docs/pgd/5.6/compatibility.mdx | 57 +++++++++++++++---- product_docs/docs/pgd/5.6/decoding_worker.mdx | 1 + product_docs/docs/pgd/5.6/index.mdx | 16 +----- 3 files changed, 50 insertions(+), 24 deletions(-) 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/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). +--- From 15ec610656f8f59eb2a93b00050165ccf1ebd50f Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:17:33 +0000 Subject: [PATCH 08/17] Fixed up unresolved conflicy --- product_docs/docs/pgd/5/reference/index.json | 354 +------------------ 1 file changed, 1 insertion(+), 353 deletions(-) diff --git a/product_docs/docs/pgd/5/reference/index.json b/product_docs/docs/pgd/5/reference/index.json index f88be0ce9be..7fce149a51b 100644 --- a/product_docs/docs/pgd/5/reference/index.json +++ b/product_docs/docs/pgd/5/reference/index.json @@ -1,355 +1,4 @@ { -<<<<<<< HEAD - "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" -======= "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", @@ -699,5 +348,4 @@ "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" ->>>>>>> b676c968f5 (Removed alias designation and added explanation in Details.) -} \ No newline at end of file +} From 0b7ba2b62d5f4a6472ba8d284829af7d48eaa481 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:19:33 +0000 Subject: [PATCH 09/17] Update product_docs/docs/pgd/5.6/reference/functions.mdx --- product_docs/docs/pgd/5.6/reference/functions.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_docs/docs/pgd/5.6/reference/functions.mdx b/product_docs/docs/pgd/5.6/reference/functions.mdx index 39436fa4a49..a4dc42e6251 100644 --- a/product_docs/docs/pgd/5.6/reference/functions.mdx +++ b/product_docs/docs/pgd/5.6/reference/functions.mdx @@ -333,7 +333,7 @@ bdr.wait_node_confirm_lsn(node_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT #### Notes -Requires `bdr_superuser` privileges to use. +Requires `bdr_application` privileges to use. ### `bdr.wait_for_apply_queue` From bae7adfc971bc57826386ee107aeff385de84fe3 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 14 Nov 2024 09:58:32 +0000 Subject: [PATCH 10/17] Fix up synchronous commit anchors from _ to - Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/commit-scopes/synchronous_commit.mdx | 2 +- product_docs/docs/pgd/5.6/reference/commit-scopes.mdx | 4 ++-- product_docs/docs/pgd/5.6/reference/index.json | 2 +- product_docs/docs/pgd/5.6/reference/index.mdx | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) 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 8e4a5e7b0a5..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 @@ -26,7 +26,7 @@ SELECT bdr.create_commit_scope( ## 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 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 4768eecd452..1dfcedd54a9 100644 --- a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx +++ b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx @@ -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) @@ -176,7 +176,7 @@ The `commit_scope_degrade_operation` must be `SYNCHRONOUS COMMIT` with a less re ## 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/index.json b/product_docs/docs/pgd/5.6/reference/index.json index 172600ecabf..aecf10565b2 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -224,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 72977f33312..fd221b4083b 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -307,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) From 8408a4561196f2403749039c1df3150106c80061 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 11:39:00 -0500 Subject: [PATCH 11/17] Update 5.6 docs to reflect multi-row conflicts possibility given unblocked EXCLUDE constraints in 5.6 (#6204) * Changed language to mention EXCLUDE constraints causing mult-row conflicts possibility in conflicts reference. * Added Exclusion constraint conflicts section back to Types of Conflict page with updated language for 5.6 * Changed sentence in reference describing ultiple_unique_constraints. * Changed multiple_unique_conflicts description. * Changed language to reflect nuance regarding UNIQUE and EXCLUDE constraints causing multi-row conflicts. --- .../conflicts/02_types_of_conflict.mdx | 20 ++++++++++++------- .../docs/pgd/5.6/reference/conflicts.mdx | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) 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/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. | From 38ba6f18652b29a8298a7f2f01ea86f11073c777 Mon Sep 17 00:00:00 2001 From: Florin Irion Date: Wed, 20 Nov 2024 17:05:12 +0100 Subject: [PATCH 12/17] PGD 5.6.1 release notes BDR-5715 --- product_docs/docs/pgd/5.6/rel_notes/index.mdx | 2 + .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 154 ++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml 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..143f7ea75c5 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -4,6 +4,7 @@ navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later navigation: - pgd_5.6.0_rel_notes + - pgd_5.6.1_rel_notes --- @@ -13,3 +14,4 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P | Release Date | EDB Postgres Distributed | BDR extension | PGD CLI | PGD Proxy | |---|---|---|---|---| | 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | +| 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | 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..3908c435fea --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -0,0 +1,154 @@ +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: | + - Add Postgres 17 support + - ARM64 Processor support +relnotes: +- relnote: Add Postgres 17 support + component: BDR + component_version: 5.6.1 + details: | + Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. + jira: BDR-5410 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: 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: Enhancement + severity: High + impact: High +- relnote: Address 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: Enhancement + severity: High + impact: High +- relnote: Fix 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: Fix 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: Fix 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: Add `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: Bug-fix + severity: High + impact: High +- relnote: Enhancements 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: Communicating LSN Progress in Optimized Topology Configurations. + 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: Fix 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: Don't create 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 + From 8d815e623364caa2c7fe721c649c176e92f32bb7 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Wed, 20 Nov 2024 16:43:32 +0000 Subject: [PATCH 13/17] Generated pages and recatagorised some items Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/rel_notes/index.mdx | 4 +- .../pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 84 +++++++++++++++++++ .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 8 +- 3 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx 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 143f7ea75c5..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,8 +3,8 @@ 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.0_rel_notes - pgd_5.6.1_rel_notes + - pgd_5.6.0_rel_notes --- @@ -13,5 +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 | |---|---|---|---|---| -| 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | | 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..0f3d540302e --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx @@ -0,0 +1,84 @@ +--- +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 + +- Add Postgres 17 support +- ARM64 Processor support + +## Features + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add Postgres 17 support

Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2.

+
BDR5.6.1
ARM64 Processor Support

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

+
+ + +## Enhancements + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add 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
Enhancements 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
Communicating LSN Progress in Optimized Topology Configurations.

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.

+
+ + +## Bug Fixes + + + + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Address 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
Fix 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
Fix 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
Fix 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
Fix 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
Don't create slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

+
+ + 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 index 3908c435fea..2d691a04ab8 100644 --- 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 @@ -18,7 +18,7 @@ relnotes: Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. jira: BDR-5410 addresses: "" - type: Enhancement + type: Feature severity: High impact: High - relnote: ARM64 Processor Support @@ -28,7 +28,7 @@ relnotes: Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9. jira: BDR-5410 addresses: "" - type: Enhancement + type: Feature severity: High impact: High - relnote: Address walsender crash that happend during configuration reload. @@ -41,7 +41,7 @@ relnotes: pgl_wait_for_standby_confirmation() function. jira: BDR-5661 addresses: "42100" - type: Enhancement + type: Bug-fix severity: High impact: High - relnote: Fix unintended eager connection related to consensus connections among Subscriber Only group members @@ -95,7 +95,7 @@ relnotes: LSN. If the `target` LSN is NULL, it will wait for the current `wal_flush_lsn`. jira: BDR-5200 addresses: "" - type: Bug-fix + type: Enhancement severity: High impact: High - relnote: Enhancements in SO Node Management and Progress Tracking. From c1bd56a7a159da7e6fab76f6bf6e8c84eb1624da Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 21 Nov 2024 09:25:21 +0000 Subject: [PATCH 14/17] Added proxy rel note, set past tense. Signed-off-by: Dj Walker-Morgan --- .../pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 31 +++++++------- .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 40 ++++++++++++------- 2 files changed, 42 insertions(+), 29 deletions(-) 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 index 0f3d540302e..ac5e69aaf0a 100644 --- 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 @@ -9,15 +9,16 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Highlights -- Add Postgres 17 support -- ARM64 Processor support +- Postgres 17 support +- ARM64 processor support ## Features - - +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add Postgres 17 support

Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2.

+ + -
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
ARM64 Processor Support

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

+
BDR5.6.1
Added ARM64 processor Support

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

@@ -25,7 +26,7 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Enhancements - - - @@ -50,12 +51,12 @@ subscriber-only nodes through logical replication.

## Bug Fixes
ComponentVersionDescriptionAddresses
BDR5.6.1
Add bdr.wait_node_confirm_lsn().

The function bdr.wait_node_confirm_lsn() has been introduced to wait until a specific node +

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 @@ -33,14 +34,14 @@ 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
Enhancements 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 +

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
Communicating LSN Progress in Optimized Topology Configurations.

While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized +

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.

- - - - - - +
ComponentVersionDescriptionAddresses
BDR5.6.1
Address walsender crash that happend during configuration reload.

Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. +

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
Fix unintended eager connection related to consensus connections among Subscriber Only group members

The msgbroker module used to establish consensus connections lazily, meaning that connections +

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 @@ -63,13 +64,13 @@ consequence: a fully meshed consensus network among subscriber-only nodes, which 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
Fix autopatition task scheduling.

To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks +

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
Fix parting subscription with standbys.

The parting subscription used to hang, failing to wait for standbys when the +

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
Fix parting SO node with multiple origins.

All relevant origins must be removed when parting SO node +

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 @@ -77,7 +78,9 @@ 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
Don't create slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

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

Subscriber only nodes should not have slots on witness nodes.

+
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 index 2d691a04ab8..1691a41e8ed 100644 --- 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 @@ -8,20 +8,21 @@ meta: intro: | EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. highlights: | - - Add Postgres 17 support - - ARM64 Processor support + - Postgres 17 support + - ARM64 processor support relnotes: -- relnote: Add Postgres 17 support +- relnote: Added Postgres 17 support component: BDR component_version: 5.6.1 details: | - Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. + 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: ARM64 Processor Support +- relnote: Added ARM64 processor Support component: BDR component_version: 5.6.1 details: | @@ -31,7 +32,7 @@ relnotes: type: Feature severity: High impact: High -- relnote: Address walsender crash that happend during configuration reload. +- relnote: Addressed walsender crash that happend during configuration reload. component: BDR component_version: 5.6.1 details: | @@ -44,7 +45,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix unintended eager connection related to consensus connections among Subscriber Only group members +- relnote: Fixed unintended eager connection related to consensus connections among Subscriber Only group members component: BDR component_version: 5.6.1 details: | @@ -60,7 +61,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix autopatition task scheduling. +- relnote: Fixed autopatition task scheduling. component: BDR component_version: 5.6.1 details: | @@ -71,7 +72,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix parting subscription with standbys. +- relnote: Fixed parting subscription with standbys. component: BDR component_version: 5.6.1 details: | @@ -82,7 +83,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Add `bdr.wait_node_confirm_lsn()`. +- relnote: Added `bdr.wait_node_confirm_lsn()`. component: BDR component_version: 5.6.1 details: | @@ -98,7 +99,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Enhancements in SO Node Management and Progress Tracking. +- relnote: Improvements made in SO Node Management and Progress Tracking. component: BDR component_version: 5.6.1 details: | @@ -113,7 +114,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Communicating LSN Progress in Optimized Topology Configurations. +- relnote: LSN Progress in Optimized Topology Configurations is now communicated. component: BDR component_version: 5.6.1 details: | @@ -125,7 +126,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Fix parting SO node with multiple origins. +- relnote: Fixed parting SO node with multiple origins. component: BDR component_version: 5.6.1 details: | @@ -141,7 +142,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Don't create slots for subscriber only nodes on witness nodes. +- relnote: Stopped creation of slots for subscriber only nodes on witness nodes. component: BDR component_version: 5.6.1 details: | @@ -151,4 +152,13 @@ relnotes: 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 From 0c96fec798d57d3a3e744448c840773afe39487a Mon Sep 17 00:00:00 2001 From: Petr Jelinek Date: Thu, 21 Nov 2024 12:07:30 +0100 Subject: [PATCH 15/17] Update relnote_5.6.1.yml Add couple missing changes to release 5.6.1 notes --- .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 index 1691a41e8ed..e62ff6c7547 100644 --- 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 @@ -152,6 +152,30 @@ relnotes: type: Bug-fix severity: High impact: High +- relnote: Allow (some) disallowed DDL when bdr.permit_unsafe_commands is enabled + component: BDR + component_version: 5.6.1 + details: | + Some DDL commands can be safe in situations PGD does not allow them yet. For example rewriting + ALTER TABLE that only does immutable conversions. The `bdr.permit_unsafe_commands` now allows user + to override the safety check and execute the command anyway, if they are know the command is safe. + jira: "" + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Don't wait for DEGRADE clause in every session + component: BDR + component_version: 5.6.1 + details: | + When using commit scope with DEGRADE clause, the transactions are supposed to start in DEGRADE + mode already if system detects that it's in degraded state, so 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 From abcbc1d28289fdc9c5263a8d773a34e09a9fb55a Mon Sep 17 00:00:00 2001 From: Petr Jelinek Date: Thu, 21 Nov 2024 13:56:11 +0100 Subject: [PATCH 16/17] Update ddl-command-handling.mdx Update allowed DDL commands and overrides --- .../docs/pgd/5.6/ddl/ddl-command-handling.mdx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) 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 From 2cb24b6b187d1393e34d3b5a7841eb299eeeed24 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 21 Nov 2024 14:11:38 +0000 Subject: [PATCH 17/17] Final edits for 5.6.1 release notes Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 6 +++++- .../docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 12 ++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) 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 index ac5e69aaf0a..7d5b4b340b4 100644 --- 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 @@ -14,7 +14,7 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Features - +
ComponentVersionDescriptionAddresses
@@ -45,6 +45,8 @@ Additionally, the bdr_get_all_origins function now considers SO nod topology configuration, the LSN progress of all data nodes is periodically communicated to these subscriber-only nodes through logical replication.

+
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
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.

+
@@ -80,6 +82,8 @@ 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 index e62ff6c7547..ddfd29bf032 100644 --- 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 @@ -152,25 +152,21 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Allow (some) disallowed DDL when bdr.permit_unsafe_commands is enabled +- relnote: Some DDL commands are now allowed by `bdr.permit_unsafe_commands` when set. component: BDR component_version: 5.6.1 details: | - Some DDL commands can be safe in situations PGD does not allow them yet. For example rewriting - ALTER TABLE that only does immutable conversions. The `bdr.permit_unsafe_commands` now allows user - to override the safety check and execute the command anyway, if they are know the command is safe. + 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: Don't wait for DEGRADE clause in every session +- 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, the transactions are supposed to start in DEGRADE - mode already if system detects that it's in degraded state, so that the timeout is not - applied on every commit. + 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