Documentation
¶
Index ¶
- Constants
- func DefaultGUCs() map[string]any
- func DefaultTunableGUCs(memBytes uint64, cpus float64, clusterSize int) map[string]any
- func IsDatabaseNotExists(err error) bool
- func IsSpockNodeNotConfigured(err error) bool
- func QuoteIdentifier(in string) string
- func ReplicationSlotName(databaseName, providerName, subscriberName string) string
- func SnowflakeLolorGUCs(nodeOrdinal int) map[string]any
- func Spock4DefaultGUCs() map[string]any
- func StartRepairModeTxn(ctx context.Context, conn *pgx.Conn) (pgx.Tx, error)
- func UnquoteIdentifier(in string) string
- type BuiltinRoleOptions
- type BuiltinRolePrivilegeOptions
- type ConditionalStatement
- func CreateDatabase(name string) ConditionalStatement
- func CreateReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
- func CreateRoleIfNotExists(name string) ConditionalStatement
- func CreateSubscription(providerName, subscriberName string, providerDSN *DSN, disabled bool, ...) ConditionalStatement
- func DropReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
- func EnableSubscription(providerNode, subscriberNode string, disabled bool) ConditionalStatement
- func RenameDB(oldName, newName string) ConditionalStatement
- func TerminateReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
- type DSN
- type Executor
- type IStatement
- type PgServiceConf
- type Query
- func CurrentReplicationSlotLSN(databaseName, providerNode, subscriberNode string) Query[string]
- func GetPostgresVersion() Query[string]
- func GetReplicationSetTables() Query[ReplicationSetTable]
- func GetReplicationSets() Query[ReplicationSet]
- func GetReplicationSlotLSNFromCommitTS(databaseName, providerNode, subscriberNode string, commitTS time.Time) Query[string]
- func GetSpockReadOnly() Query[string]
- func GetSpockVersion() Query[string]
- func GetSubscriptionStatus(providerNode, subscriberNode string) Query[string]
- func GetSubscriptionStatuses() Query[SubscriptionStatus]
- func IsInRecovery() Query[bool]
- func IsReplicationSlotActive(databaseName, providerNode, subscriberNode string) Query[bool]
- func IsSpockEnabled() Query[bool]
- func LagTrackerCommitTimestamp(originNode, receiverNode string) Query[time.Time]
- func NodeNeedsCreate(nodeName string) Query[bool]
- func ReplicationSlotNeedsCreate(databaseName, providerNode, subscriberNode string) Query[bool]
- func SubscriptionDsnNeedsUpdate(providerName, subscriberName string, providerDSN *DSN) Query[bool]
- func SubscriptionNeedsCreate(providerName, subscriberName string) Query[bool]
- func SubscriptionNeedsEnable(providerName, subscriberName string, disabled bool) Query[bool]
- func SyncEvent() Query[string]
- func UserRoleNeedsCreate(name string) Query[bool]
- func WaitForSyncEvent(originNode, lsn string, timeoutSeconds int) Query[bool]
- type ReplicationSet
- type ReplicationSetTable
- type Statement
- func AddReplicationSetTable(setName string, relOID uint32, columns []string, rowFilter string, sync bool, ...) Statement
- func AdvanceReplicationSlotToLSN(databaseName, providerNode, subscriberNode string, targetLSN string) Statement
- func AlterOwner(dbName, owner string) Statement
- func CreateReplicationSet(r ReplicationSet) Statement
- func DropAllSubscriptions() Statement
- func DropSubscription(providerName, subscriberName string) Statement
- func EnableRepairMode() Statement
- func TerminateOtherConnections(dbName string) Statement
- type Statements
- func CreateBuiltInRoles(opts BuiltinRoleOptions) (Statements, error)
- func CreatePgEdgeSuperuserRole(opts BuiltinRoleOptions) (Statements, error)
- func CreateUserRole(opts UserRoleOptions) (Statements, error)
- func DropSpockAndCleanupSlots(dbName string) Statements
- func GrantBuiltinRolePrivileges(opts BuiltinRolePrivilegeOptions) Statements
- func InitializeSpockNode(nodeName string, nodeDSN *DSN) Statements
- func RestoreReplicationSets(sets []ReplicationSet, tabs []ReplicationSetTable) Statements
- func SetSafeIdentifiers() Statements
- type SubscriptionStatus
- type UserRoleOptions
Constants ¶
const ( SubStatusInitializing = "initializing" // Worker running, sync in progress SubStatusReplicating = "replicating" // Worker running, sync ready SubStatusUnknown = "unknown" // Worker running, no sync status record SubStatusDisabled = "disabled" // Worker not running, subscription disabled SubStatusDown = "down" // Worker not running, subscription enabled )
Spock subscription statuses returned by spock.sub_show_status(). See: https://github.com/pgEdge/spock/blob/main/src/spock_functions.c
Variables ¶
This section is empty.
Functions ¶
func DefaultGUCs ¶
func DefaultTunableGUCs ¶
func IsDatabaseNotExists ¶ added in v0.8.0
func IsSpockNodeNotConfigured ¶ added in v0.7.0
IsSpockNodeNotConfigured reports whether err is a PostgreSQL error indicating that the current database has not been initialized as a spock node (SQLSTATE 55000 — object_not_in_prerequisite_state, as raised by spock.sync_event and related functions when spock.node_create has not been called or the node has been dropped via spock.node_drop).
Source: https://github.com/pgEdge/spock/blob/main/src/spock_functions.c PostgreSQL SQLSTATE reference: https://www.postgresql.org/docs/current/errcodes-appendix.html
func QuoteIdentifier ¶ added in v0.8.0
QuoteIdentifier quotes and sanitizes identifiers. Callers must execute the SetEncode statements to consider the output of this method safe.
func ReplicationSlotName ¶
func SnowflakeLolorGUCs ¶
func Spock4DefaultGUCs ¶
func StartRepairModeTxn ¶ added in v0.8.0
StartRepairModeTxn will start a new transaction and, if Spock is enabled, enable repair mode for the transaction. Callers are responsible for calling Rollback and Commit on the returned transaction.
func UnquoteIdentifier ¶ added in v0.8.0
UnquoteIdentifier removes quotes from a quoted identifier.
Types ¶
type BuiltinRoleOptions ¶
type BuiltinRoleOptions struct {
PGVersion string
}
type BuiltinRolePrivilegeOptions ¶ added in v0.8.0
func (BuiltinRolePrivilegeOptions) Schemas ¶ added in v0.8.0
func (o BuiltinRolePrivilegeOptions) Schemas() []string
type ConditionalStatement ¶
type ConditionalStatement struct {
If Query[bool]
Then IStatement
Else IStatement
}
func CreateDatabase ¶
func CreateDatabase(name string) ConditionalStatement
func CreateReplicationSlot ¶
func CreateReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
func CreateRoleIfNotExists ¶ added in v0.8.0
func CreateRoleIfNotExists(name string) ConditionalStatement
func CreateSubscription ¶
func DropReplicationSlot ¶ added in v0.7.0
func DropReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
func EnableSubscription ¶
func EnableSubscription(providerNode, subscriberNode string, disabled bool) ConditionalStatement
func RenameDB ¶
func RenameDB(oldName, newName string) ConditionalStatement
func TerminateReplicationSlot ¶ added in v0.7.0
func TerminateReplicationSlot(databaseName, providerNode, subscriberNode string) ConditionalStatement
TerminateReplicationSlot terminates the walsender process using a replication slot, if one is active. This must be called before dropping a slot whose subscriber has gone down, since pg_drop_replication_slot fails on active slots.
type DSN ¶
type PgServiceConf ¶ added in v0.8.0
func NewPgServiceConf ¶ added in v0.8.0
func NewPgServiceConf() *PgServiceConf
func (*PgServiceConf) String ¶ added in v0.8.0
func (c *PgServiceConf) String() string
type Query ¶
func GetPostgresVersion ¶
func GetReplicationSetTables ¶
func GetReplicationSetTables() Query[ReplicationSetTable]
func GetReplicationSets ¶
func GetReplicationSets() Query[ReplicationSet]
func GetSpockReadOnly ¶
func GetSpockVersion ¶
func GetSubscriptionStatus ¶ added in v0.7.0
GetSubscriptionStatus returns the current status of a specific subscription
func GetSubscriptionStatuses ¶
func GetSubscriptionStatuses() Query[SubscriptionStatus]
func IsInRecovery ¶ added in v0.8.0
func IsReplicationSlotActive ¶ added in v0.7.0
IsReplicationSlotActive checks if a replication slot is currently being used by an active walsender process. Uses EXISTS to always return exactly one row.
func IsSpockEnabled ¶
func NodeNeedsCreate ¶ added in v0.8.0
func SubscriptionNeedsCreate ¶
func SubscriptionNeedsEnable ¶
func UserRoleNeedsCreate ¶ added in v0.8.0
UserRoleNeedsCreate returns a query that evaluates to true when the named role does not yet exist in pg_catalog.pg_roles.
func WaitForSyncEvent ¶
type ReplicationSet ¶
type ReplicationSetTable ¶
type Statement ¶
func AddReplicationSetTable ¶
func AddReplicationSetTable( setName string, relOID uint32, columns []string, rowFilter string, sync bool, includePartitions bool, ) Statement
https://docs.pgedge.com/spock_ext/spock_functions/functions/spock_repset_add_table
func AlterOwner ¶ added in v0.8.0
func CreateReplicationSet ¶
func CreateReplicationSet(r ReplicationSet) Statement
https://docs.pgedge.com/spock_ext/spock_functions/functions/spock_repset_create
func DropAllSubscriptions ¶
func DropAllSubscriptions() Statement
func DropSubscription ¶
func EnableRepairMode ¶
func EnableRepairMode() Statement
type Statements ¶
type Statements []IStatement
func CreateBuiltInRoles ¶
func CreateBuiltInRoles(opts BuiltinRoleOptions) (Statements, error)
func CreatePgEdgeSuperuserRole ¶
func CreatePgEdgeSuperuserRole(opts BuiltinRoleOptions) (Statements, error)
func CreateUserRole ¶
func CreateUserRole(opts UserRoleOptions) (Statements, error)
func DropSpockAndCleanupSlots ¶
func DropSpockAndCleanupSlots(dbName string) Statements
func GrantBuiltinRolePrivileges ¶ added in v0.8.0
func GrantBuiltinRolePrivileges(opts BuiltinRolePrivilegeOptions) Statements
func InitializeSpockNode ¶ added in v0.8.0
func InitializeSpockNode(nodeName string, nodeDSN *DSN) Statements
func RestoreReplicationSets ¶
func RestoreReplicationSets(sets []ReplicationSet, tabs []ReplicationSetTable) Statements
func SetSafeIdentifiers ¶ added in v0.8.0
func SetSafeIdentifiers() Statements
SetSafeIdentifiers ensures that the escaped identifiers produced by the QuoteIdentifier method are safe for the duration of the session.
type SubscriptionStatus ¶
type SubscriptionStatus struct {
SubscriptionName string `json:"subscription_name"`
Status string `json:"status"`
ProviderNode string `json:"provider_node"`
ProviderDSN string `json:"provider_dsn"`
SlotName string `json:"slot_name"`
ReplicationSets []string `json:"replication_sets"`
ForwardOrigins []string `json:"forward_origins"`
}