Skip to content

Commit

Permalink
database/sql: reordering fields to reduce struct sizes
Browse files Browse the repository at this point in the history
There are 16 bytes reduced.
  • Loading branch information
apocelipes committed Apr 26, 2024
1 parent 5419f65 commit e1fe97a
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions src/database/sql/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -551,9 +551,9 @@ type driverConn struct {

// guarded by db.mu
inUse bool
dbmuClosed bool // same as closed, but guarded by db.mu, for removeClosedStmtLocked
returnedAt time.Time // Time the connection was created or returned.
onPut []func() // code (with db.mu held) run when conn is next returned
dbmuClosed bool // same as closed, but guarded by db.mu, for removeClosedStmtLocked
}

func (dc *driverConn) releaseConn(err error) {
Expand Down Expand Up @@ -2923,19 +2923,8 @@ type Rows struct {
//
// closemu guards lasterr and closed.
closemu sync.RWMutex
closed bool
lasterr error // non-nil only if closed is true

// lastcols is only used in Scan, Next, and NextResultSet which are expected
// not to be called concurrently.
lastcols []driver.Value

// raw is a buffer for RawBytes that persists between Scan calls.
// This is used when the driver returns a mismatched type that requires
// a cloning allocation. For example, if the driver returns a *string and
// the user is scanning into a *RawBytes, we need to copy the string.
// The raw buffer here lets us reuse the memory for that copy across Scan calls.
raw []byte
closed bool

// closemuScanHold is whether the previous call to Scan kept closemu RLock'ed
// without unlocking it. It does that when the user passes a *RawBytes scan
Expand All @@ -2951,6 +2940,17 @@ type Rows struct {
// returning. It's only used by Next and Err which are
// expected not to be called concurrently.
hitEOF bool

// lastcols is only used in Scan, Next, and NextResultSet which are expected
// not to be called concurrently.
lastcols []driver.Value

// raw is a buffer for RawBytes that persists between Scan calls.
// This is used when the driver returns a mismatched type that requires
// a cloning allocation. For example, if the driver returns a *string and
// the user is scanning into a *RawBytes, we need to copy the string.
// The raw buffer here lets us reuse the memory for that copy across Scan calls.
raw []byte
}

// lasterrOrErrLocked returns either lasterr or the provided err.
Expand Down

0 comments on commit e1fe97a

Please sign in to comment.