Skip to content

Commit 4473e6c

Browse files
committed
sql: move bufferable session var lookup to init-time
Lookups for bufferable session vars are now performed once at init-time rather than every time `(*connExecutor).reportSessionDataChanges` is called. Release note: None
1 parent 287999c commit 4473e6c

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

pkg/sql/conn_executor_exec.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,20 +2325,16 @@ func (ex *connExecutor) reportSessionDataChanges(fn func() error) error {
23252325
after := ex.sessionDataStack.Top()
23262326
if ex.dataMutatorIterator.paramStatusUpdater != nil {
23272327
for _, param := range bufferableParamStatusUpdates {
2328-
_, v, err := getSessionVar(param.lowerName, false /* missingOk */)
2329-
if err != nil {
2330-
return err
2331-
}
2332-
if v.Equal == nil {
2328+
if param.sv.Equal == nil {
23332329
return errors.AssertionFailedf("Equal for %s must be set", param.name)
23342330
}
2335-
if v.GetFromSessionData == nil {
2331+
if param.sv.GetFromSessionData == nil {
23362332
return errors.AssertionFailedf("GetFromSessionData for %s must be set", param.name)
23372333
}
2338-
if !v.Equal(before, after) {
2334+
if !param.sv.Equal(before, after) {
23392335
ex.dataMutatorIterator.paramStatusUpdater.BufferParamStatusUpdate(
23402336
param.name,
2341-
v.GetFromSessionData(after),
2337+
param.sv.GetFromSessionData(after),
23422338
)
23432339
}
23442340
}

pkg/sql/exec_util.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3387,8 +3387,8 @@ type paramStatusUpdater interface {
33873387
}
33883388

33893389
type bufferableParamStatusUpdate struct {
3390-
name string
3391-
lowerName string
3390+
name string
3391+
sv sessionVar
33923392
}
33933393

33943394
// bufferableParamStatusUpdates contains all vars which can be sent through
@@ -3403,9 +3403,14 @@ var bufferableParamStatusUpdates = func() []bufferableParamStatusUpdate {
34033403
}
34043404
ret := make([]bufferableParamStatusUpdate, len(params))
34053405
for i, param := range params {
3406+
svName := strings.ToLower(param)
3407+
_, sv, err := getSessionVar(svName, false /* missingOk */)
3408+
if err != nil {
3409+
panic(errors.Wrapf(err, "could not find session var %q", svName))
3410+
}
34063411
ret[i] = bufferableParamStatusUpdate{
3407-
name: param,
3408-
lowerName: strings.ToLower(param),
3412+
name: param,
3413+
sv: sv,
34093414
}
34103415
}
34113416
return ret

0 commit comments

Comments
 (0)