-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ddl: fix expression index with insert causes losing index data #26248
Changes from 6 commits
d2c3f19
0dec853
7364ff3
3ab6b13
5f6a1d2
14c3d96
4d09bd4
322620f
76a99e5
6107000
bd61ac5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -410,22 +410,46 @@ func (s *testSerialDBSuite) TestAddExpressionIndexRollback(c *C) { | |||||||||||||||||||||||||
ctx.Store = s.store | ||||||||||||||||||||||||||
times := 0 | ||||||||||||||||||||||||||
hook.OnJobUpdatedExported = func(job *model.Job) { | ||||||||||||||||||||||||||
if job.SchemaState == model.StateDeleteOnly { | ||||||||||||||||||||||||||
switch job.SchemaState { | ||||||||||||||||||||||||||
case model.StateDeleteOnly: | ||||||||||||||||||||||||||
if job.SchemaState == model.StateDeleteOnly { | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can put line416-418 after line412, then we can remove this check after every |
||||||||||||||||||||||||||
_, checkErr = tk1.Exec("delete from t1 where c1 = 40;") | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we add insert and update statements here? This schema state will be running two times. |
||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
case model.StateWriteOnly: | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
_, checkErr = tk1.Exec("delete from t1 where c1 = 40;") | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
if checkErr == nil && job.SchemaState == model.StateWriteReorganization && times == 0 { | ||||||||||||||||||||||||||
currJob = job | ||||||||||||||||||||||||||
times++ | ||||||||||||||||||||||||||
_, checkErr = tk1.Exec("insert into t1 values (2, 2, 2)") | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
_, checkErr = tk1.Exec("update t1 set c1 = 3 where c2 = 80") | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
case model.StateWriteReorganization: | ||||||||||||||||||||||||||
if checkErr == nil && job.SchemaState == model.StateWriteReorganization && times == 0 { | ||||||||||||||||||||||||||
_, checkErr = tk1.Exec("insert into t1 values (4, 4, 4)") | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
_, checkErr = tk1.Exec("update t1 set c1 = 5 where c2 = 80") | ||||||||||||||||||||||||||
if checkErr != nil { | ||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
currJob = job | ||||||||||||||||||||||||||
times++ | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
d.(ddl.DDLForTest).SetHook(hook) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
tk.MustGetErrMsg("alter table t1 add index expr_idx ((pow(c1, c2)));", "[ddl:8202]Cannot decode index value, because [types:1690]DOUBLE value is out of range in 'pow(160, 160)'") | ||||||||||||||||||||||||||
c.Assert(checkErr, IsNil) | ||||||||||||||||||||||||||
tk.MustQuery("select * from t1;").Check(testkit.Rows("20 20 20", "80 80 80", "160 160 160")) | ||||||||||||||||||||||||||
tk.MustQuery("select * from t1 order by c1;").Check(testkit.Rows("2 2 2", "4 4 4", "5 80 80", "20 20 20", "160 160 160")) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
// Check whether the reorg information is cleaned up. | ||||||||||||||||||||||||||
err := ctx.NewTxn(context.Background()) | ||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This
if
statement is duplicated with line414.