Documentation
¶
Overview ¶
Package postgres 提供 PostgreSQL 配置、连接和独占行仓储。
Index ¶
- Variables
- func EnsureSchema(ctx context.Context, db *sql.DB, initialize bool) error
- func LoadDSN(path string) (string, error)
- func Open(ctx context.Context, dsn string) (*sql.DB, error)
- type LockedRows
- func (l *LockedRows) BeginTx(ctx context.Context) (flowable.Transaction, error)
- func (l *LockedRows) CheckOwner(ctx context.Context) error
- func (l *LockedRows) ExecContext(ctx context.Context, query string, args ...any) (flowable.Result, error)
- func (l *LockedRows) QueryContext(ctx context.Context, query string, args ...any) (flowable.Rows, error)
- func (l *LockedRows) Release() error
Constants ¶
This section is empty.
Variables ¶
var ErrRowLockLost = errors.New("PostgreSQL 行仓储独占权已丢失")
ErrRowLockLost 表示当前行仓储失去数据库独占权。
Functions ¶
func EnsureSchema ¶
EnsureSchema 校验已有 Schema(引擎表与 workflow 表分别判断),或在显式允许时初始化缺失部分。 @param ctx 操作上下文 @param db 数据库连接池 @param initialize 是否允许初始化 @return 初始化或校验错误
Types ¶
type LockedRows ¶
type LockedRows struct {
// contains filtered or unexported fields
}
LockedRows 将读写及事务绑定到持锁的同一物理连接;断线后禁止透明重连写入。
func NewLockedRows ¶
NewLockedRows 获取数据库会话独占锁,其他服务正在运行时立即失败。 @param ctx 初始化上下文 @param db 数据库连接池 @return 独占行数据库 @return 获取错误
func (*LockedRows) BeginTx ¶
func (l *LockedRows) BeginTx(ctx context.Context) (flowable.Transaction, error)
BeginTx 在持锁物理连接开始事务。 @param ctx 上下文 @return 事务 @return 开始错误
func (*LockedRows) CheckOwner ¶
func (l *LockedRows) CheckOwner(ctx context.Context) error
CheckOwner 校验当前连接的独占锁归属。 @param ctx 上下文 @return 连接或归属错误
func (*LockedRows) ExecContext ¶
func (l *LockedRows) ExecContext(ctx context.Context, query string, args ...any) (flowable.Result, error)
ExecContext 在持锁连接执行写入。 @param ctx 上下文 @param query SQL @param args 参数 @return 执行结果 @return 执行错误
func (*LockedRows) QueryContext ¶
func (l *LockedRows) QueryContext(ctx context.Context, query string, args ...any) (flowable.Rows, error)
QueryContext 在持锁连接执行查询。 @param ctx 上下文 @param query SQL @param args 参数 @return 行结果 @return 查询错误
func (*LockedRows) Release ¶
func (l *LockedRows) Release() error
Release 释放锁后销毁专用物理连接,避免未释放锁或异常会话回池。 @return 首次释放错误