From: apocelipes Date: Tue, 14 May 2024 09:42:57 +0000 (+0000) Subject: database/sql: reordering fields to reduce struct sizes X-Git-Tag: go1.23rc1~351 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1f6a983baf4b9a636e9e4bbd827fcb4d6ef4ebe0;p=gostls13.git database/sql: reordering fields to reduce struct sizes There are 16 bytes reduced. Change-Id: I33ca96fd22002b3111f0462c3029d70df48adb6e GitHub-Last-Rev: 8df56a9655ef261be3ff9403491cbbe1ebda1ec0 GitHub-Pull-Request: golang/go#67055 Reviewed-on: https://go-review.googlesource.com/c/go/+/581935 LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov Reviewed-by: Ian Lance Taylor Auto-Submit: Ian Lance Taylor --- diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index fdbe4b2172..9373aa1c58 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -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) { @@ -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 @@ -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.