Internal system functions v5
Listed below are internal system functions. Many are used in the creation of various views and we recommend that you do not use the functions directly, but rather use the views that they serve.
General internal functions
bdr.bdr_get_commit_decisions
Convenience routine to inspect shared memory state
Synopsis
bdr.bdr_track_commit_decision
Save the transaction commit status in the shared memory hash table. This is used by the upgrade scripts to transfer commit decisions saved in bdr.node_pre_commit catalog to the shared memory hash table. This will also be logged to the WAL and hence can be reloaded from WAL.
Synopsis
bdr.consensus_kv_fetch
Fetch value from the consistent KV Store in JSON format.
Synopsis
Parameters
key
— An arbitrary key to fetch.
Notes
This is an internal function, mainly used by HARP.
Warning
Don't use this function in user applications.
bdr.consensus_kv_store
Stores value in the consistent KV Store.
Returns timestamp of the value expiration time. This depends on ttl
. If ttl
is NULL
, then this returns infinity
. If the value was deleted, it
returns -infinity
.
Synopsis
Parameters
key
— An arbitrary unique key to insert, update, or delete.value
— JSON value to store. If NULL, any existing record is deleted.prev_value
— If set, the write operation is done only if the current value is equal toprev_value
.ttl
— Time to live of the new value, in milliseconds.
Notes
This is an internal function, mainly used by HARP.
Warning
Don't use this function in user applications.
bdr.decode_message_payload
PGD message payload function that decodes the consensus payloads to a more human-readable output.Used primarily by the bdr.global_consensus_journal_details
debug view.
bdr.decode_message_response_payload
PGD message payload function that decodes the consensus payloads to a more human-readable output. Used primarily by the bdr.global_consensus_journal_details
debug view.
bdr.difference_fix_origin_create
Creates a replication origin with a given name passed as an argument but adding a bdr_
prefix.
It returns the internal id of the origin. This performs the same functionality
as pg_replication_origin_create()
, except this requires bdr_superuser
rather than postgres superuser permissions.
bdr.difference_fix_session_reset
Marks the current session as not replaying from any origin, essentially
resetting the effect of bdr.difference_fix_session_setup()
.
It returns void. This function has the same functionality as
pg_replication_origin_session_reset()
except this function requires
bdr_superuser rather than postgres superuser permissions.
Synopsis
bdr.difference_fix_session_setup
Marks the current session as replaying from the current origin.
The function uses the pre-created bdr_local_only_origin
local
replication origin implicitly for the session. It allows replay
progress to be reported and returns void. This function performs the
same functionality as pg_replication_origin_session_setup()
except that this function requires bdr_superuser rather than postgres
superuser permissions. The earlier form of the function,
bdr.difference_fix_session_setup(text)
, was deprecated and will be
removed in upcoming releases.
Synopsis
bdr.difference_fix_xact_set_avoid_conflict
Marks the current transaction as replaying a transaction that
committed at LSN '0/0' and timestamp '2000-01-01'. This function has
the same functionality as
pg_replication_origin_xact_setup('0/0', '2000-01-01')
except this requires bdr_superuser rather than postgres superuser
permissions.
Synopsis
bdr.drop_node
Drops a node.
Warning
This function isn't intended for regular use. Execute it only if instructed by Technical Support.
This function removes the metadata for a given node from the local database. The node can be either:
- The local node, in which case all the node metadata is removed, including information about remote nodes.
- A remote node, in which case only metadata for that specific node is removed.
Synopsis
Parameters
node_name
— Name of an existing node.cascade
— Deprecated, will be removed in the future.force
— Circumvents all sanity checks and forces the removal of all metadata for the given PGD node despite a possible danger of causing inconsistencies. Only Technical Support uses a forced node drop in case of emergencies related to parting.
Notes
Before you run this, part the node using bdr.part_node()
.
This function removes metadata for a given node from the local database. The node can be the local node, in which case all the node metadata are removed, including information about remote nodes. Or it can be the remote node, in which case only metadata for that specific node is removed.
Note
PGD can have a maximum of 1024 node records (both ACTIVE and PARTED) at one time because each node has a unique sequence number assigned to it, for use by snowflakeid and timeshard sequences. PARTED nodes aren't automatically cleaned up. If this becomes a problem, you can use this function to remove those records.
bdr.get_global_locks
This function shows information about global locks held on the local node.
Used to implement the bdr.global_locks
view to provide a more detailed
overview of the locks.
bdr.get_node_conflict_resolvers
Displays a text string of all the conflict resolvers on the local node.
bdr.get_slot_flush_timestamp
Retrieves the timestamp of the last flush position confirmation for a given replication slot.
Used internally to implement the bdr.node_slots
view.
bdr.internal_alter_sequence_set_kind
PGD internal function used internally for replication of the various function calls.
No longer used by the current version of PGD. Exists only for backward compatibility during rolling upgrades.
bdr.internal_replication_set_add_table
PGD internal function used internally for replication of the various function calls.
No longer used by the current version of PGD. Exists only for backward compatibility during rolling upgrades.
bdr.internal_replication_set_remove_table
PGD internal function used internally for replication of the various function calls.
No longer used by the current version of PGD. Exists only for backward compatibility during rolling upgrades.
bdr.internal_submit_join_request
Submits a consensus request for joining a new node.
Needed by the PGD group reconfiguration internal mechanisms.
bdr.isolation_test_session_is_blocked
A helper function, extending (and actually invoking) the original
pg_isolation_test_session_is_blocked
with an added check for blocks
on global locks.
Used for isolation/concurrency tests.
bdr.local_node_info
This function displays information for the local node, needed by the PGD group reconfiguration internal mechanisms.
The view bdr.local_node_summary
provides similar information useful for
user consumption.
bdr.msgb_connect
Function for connecting to the connection pooler of another node, used by the consensus protocol.
bdr.msgb_deliver_message
Function for sending messages to another node's connection pooler, used by the consensus protocol.
bdr.node_catchup_state_name
Convert catchup state code in name
Synopsis
Parameters
catchup_state
— Oid code of the catchup state.
bdr.node_kind_name
Return human friendly name of the node kind (data|standby|witness|subscriber-only)
bdr.peer_state_name
This function transforms the node state (node_state
) into a textual
representation and is used mainly to implement the bdr.node_summary
view.
bdr.pg_xact_origin
Returns origin id of a given transaction.
Synopsis
Parameters
xid
— Transaction id whose origin is returned,
bdr.request_replay_progress_update
Requests the immediate writing of a 'replay progress update' Raft message. It's used mainly for test purposes but can be also used to test if the consensus mechanism is working.
bdr.reset_relation_stats
Returns a Boolean result after resetting the relation stats,
as viewed by bdr.stat_relation
.
bdr.reset_subscription_stats
Returns a Boolean result after resetting the statistics created by subscriptions,
as viewed by bdr.stat_subscription
.
bdr.resynchronize_table_from_node
Resynchronizes the relation from a remote node.
Synopsis
Parameters
node_name
— The node from which to copy or resync the relation data.relation
— The relation to copy from the remote node.
Notes
This function acquires a global DML lock on the relation, truncates the relation locally, and copies data into it from the remote node.
The relation must exist on both nodes with the same name and definition.
The following are supported:
- Resynchronizing partitioned tables with identical partition definitions
- Resynchronizing partitioned table to nonpartitioned table and vice versa
- Resynchronizing referenced tables by temporarily dropping and recreating foreign key constraints
After running the function on a referenced table, if the referenced column data no longer matches the referencing column values, it throws an error. After resynchronizing the referencing table data, rerun the function.
Furthermore, it supports resynchronization of tables with generated columns by computing the generated column values locally after copying the data from remote node.
Currently, row_filters are ignored by this function.
The bdr.resynchronize_table_from_node
function can be executed only by
the owner of the table, provided the owner has bdr_superuser privileges.
bdr.seq_currval
Part of the internal implementation of global sequence manipulation.
Invoked automatically when currval()
is called on a galloc or snowflakeid sequence.
bdr.seq_lastval
Part of the internal implementation of global sequence manipulation.
Invoked automatically when lastval()
is called on a galloc or snowflakeid sequence.
bdr.seq_nextval
Part of the internal implementation of global sequence increments.
Invoked automatically when nextval()
is called on a galloc or snowflakeid sequence
bdr.show_subscription_status
Retrieves information about the subscription status and is used mainly to
implement the bdr.subscription_summary
view.
bdr.show_workers
Information related to the bdr workers.
Synopsis
bdr.show_writers
Function used in the bdr.writers
view.
Task Manager Functions
bdr.taskmgr_set_leader
Request the given node
to be the task manager leader node. The leader
node is responsible for creating new tasks (currently only autopartition
makes use of this facility). A witness node, a logical standby or a
subscriber-only node can't become a leader. Such requests will fail with
an ERROR.
Synopsis
bdr.taskmgr_get_last_completed_workitem
Return the id
of the last workitem successfully completed on all nodes in the
cluster.
Synopsis
bdr.taskmgr_work_queue_check_status
Using this function, you can see the status of the background workers that are doing their job to generate and finish the tasks.
The status can be seen through these views:
bdr.taskmgr_work_queue_local_status
bdr.taskmgr_work_queue_global_status
Synopsis
Parameters
workid
— The key of the task.local
— Check the local status only.
Notes
Taskmgr workers are always running in the background, even before the
bdr.autopartition
function is called for the first time. If an invalid
workid
is used, the function returns unknown
. In-progress
is the typical status.
- On this page
- General internal functions
- bdr.bdr_get_commit_decisions
- bdr.bdr_track_commit_decision
- bdr.consensus_kv_fetch
- bdr.consensus_kv_store
- bdr.decode_message_payload
- bdr.decode_message_response_payload
- bdr.difference_fix_origin_create
- bdr.difference_fix_session_reset
- bdr.difference_fix_session_setup
- bdr.difference_fix_xact_set_avoid_conflict
- bdr.drop_node
- bdr.get_global_locks
- bdr.get_node_conflict_resolvers
- bdr.get_slot_flush_timestamp
- bdr.internal_alter_sequence_set_kind
- bdr.internal_replication_set_add_table
- bdr.internal_replication_set_remove_table
- bdr.internal_submit_join_request
- bdr.isolation_test_session_is_blocked
- bdr.local_node_info
- bdr.msgb_connect
- bdr.msgb_deliver_message
- bdr.node_catchup_state_name
- bdr.node_kind_name
- bdr.peer_state_name
- bdr.pg_xact_origin
- bdr.request_replay_progress_update
- bdr.reset_relation_stats
- bdr.reset_subscription_stats
- bdr.resynchronize_table_from_node
- bdr.seq_currval
- bdr.seq_lastval
- bdr.seq_nextval
- bdr.show_subscription_status
- bdr.show_workers
- bdr.show_writers
- Task Manager Functions