Skip to content

Commit

Permalink
opt: Invalidate memo if SafeUpdates changes
Browse files Browse the repository at this point in the history
Do not use cached memo if the SafeUpdates setting does not match.

Release note: None
  • Loading branch information
andy-kimball committed Feb 5, 2019
1 parent 317a77d commit 8470045
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
4 changes: 3 additions & 1 deletion pkg/sql/opt/memo/memo.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ type Memo struct {
dataConversion sessiondata.DataConversionConfig
reorderJoinsLimit int
zigzagJoinEnabled bool
safeUpdates bool

// curID is the highest currently in-use scalar expression ID.
curID opt.ScalarID
Expand Down Expand Up @@ -254,7 +255,8 @@ func (m *Memo) IsStale(
// changed.
if !m.dataConversion.Equals(&evalCtx.SessionData.DataConversion) ||
m.reorderJoinsLimit != evalCtx.SessionData.ReorderJoinsLimit ||
m.zigzagJoinEnabled != evalCtx.SessionData.ZigzagJoinEnabled {
m.zigzagJoinEnabled != evalCtx.SessionData.ZigzagJoinEnabled ||
m.safeUpdates != evalCtx.SessionData.SafeUpdates {
return true, nil
}

Expand Down
18 changes: 18 additions & 0 deletions pkg/sql/opt/memo/memo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,24 @@ func TestMemoIsStale(t *testing.T) {
evalCtx.SessionData.DataConversion.ExtraFloatDigits = 0
notStale()

// Stale reorder joins limit.
evalCtx.SessionData.ReorderJoinsLimit = 4
stale()
evalCtx.SessionData.ReorderJoinsLimit = 0
notStale()

// Stale zig zag join enable.
evalCtx.SessionData.ZigzagJoinEnabled = true
stale()
evalCtx.SessionData.ZigzagJoinEnabled = false
notStale()

// Stale safe updates.
evalCtx.SessionData.SafeUpdates = true
stale()
evalCtx.SessionData.SafeUpdates = false
notStale()

// Stale data sources and schema. Create new catalog so that data sources are
// recreated and can be modified independently.
catalog = testcat.New()
Expand Down

0 comments on commit 8470045

Please sign in to comment.