# README
CRDB
crdb
is a wrapper around the logic for issuing SQL transactions which performs
retries (as required by CockroachDB).
Note that unfortunately there is no generic way of extracting a pg error code;
the library has to recognize driver-dependent error types. We currently support
github.com/lib/pq
, and
github.com/jackc/pgx
when used in database/sql
driver mode.
Subpackages provide support for gorm, pgx, and sqlx used in standalone-library mode.
Note for developers: if you make any changes here (especially if they modify public APIs), please verify that the code in https://github.com/cockroachdb/examples-go still works and update as necessary.
# Functions
Execute runs fn and retries it as needed.
ExecuteInTx runs fn inside tx.
ExecuteTx runs fn inside a transaction and retries it as needed.
ExecuteTxGenericTest represents the structure of a test for the ExecuteTx function.
# Structs
AmbiguousCommitError represents an error that left a transaction in an ambiguous state: unclear if it committed or not.
MaxRetriesExceededError represents an error caused by retying the transaction too many times, without it ever succeeding.
TxnRestartError represents an error when restarting a transaction.
# Interfaces
Tx abstracts the operations needed by ExecuteInTx so that different frameworks (e.g.
WriteSkewTest abstracts the operations that needs to be performed by a particular framework for the purposes of TestExecuteTx.