()
| 36 | } |
| 37 | |
| 38 | func (d *pgTxnDriver) Lock() error { |
| 39 | var err error |
| 40 | |
| 41 | d.tx, err = d.db.BeginTx(d.ctx, nil) |
| 42 | if err != nil { |
| 43 | return err |
| 44 | } |
| 45 | const q = ` |
| 46 | SELECT pg_advisory_xact_lock($1) |
| 47 | ` |
| 48 | |
| 49 | _, err = d.tx.ExecContext(d.ctx, q, lockID) |
| 50 | if err != nil { |
| 51 | return xerrors.Errorf("exec select: %w", err) |
| 52 | } |
| 53 | return nil |
| 54 | } |
| 55 | |
| 56 | func (d *pgTxnDriver) Unlock() error { |
| 57 | err := d.tx.Commit() |