Skip to content
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

planner: fix incorrect results when using a prefix index with OR condition (#21251) #21287

Merged
merged 6 commits into from
Nov 26, 2020

Conversation

ti-srebot
Copy link
Contributor

cherry-pick #21251 to release-4.0


What problem does this PR solve?

Issue Number: close #21234

Problem Summary:
In the previous implementation, when we use a prefix index with OR condition, it will fail to Cut Datum By PrefixLen.

What is changed and how it works?

When we use detachDNFCondAndBuildRangeForIndex function, we take prefix index into consideration.

Check List

Tests

  • Unit test
  • Integration test

Release note

  • fix incorrect results when using a prefix index with OR condition

Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot
Copy link
Contributor Author

@Reminiscent please accept the invitation then you can push to the cherry-pick pull requests.
https://github.com/ti-srebot/tidb/invitations

Copy link
Member

@winoros winoros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@ti-srebot ti-srebot added the status/LGT1 Indicates that a PR has LGTM 1. label Nov 25, 2020
@Reminiscent
Copy link
Contributor

@SunRunAway @lzmhhh123 PTAL

@Reminiscent
Copy link
Contributor

/run-all-tests

1 similar comment
@zhouqiang-cl
Copy link
Contributor

/run-all-tests

lzmhhh123
lzmhhh123 previously approved these changes Nov 26, 2020
Copy link
Contributor

@lzmhhh123 lzmhhh123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ti-srebot ti-srebot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Nov 26, 2020
@lzmhhh123
Copy link
Contributor

/merge

@ti-srebot ti-srebot added the status/can-merge Indicates a PR has been approved by a committer. label Nov 26, 2020
@ti-srebot
Copy link
Contributor Author

Your auto merge job has been accepted, waiting for:

  • 21236
  • 21272

@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot
Copy link
Contributor Author

@ti-srebot merge failed.

@tiancaiamao
Copy link
Contributor

[2020-11-26T05:54:31.229Z] ==================
[2020-11-26T05:54:31.229Z] WARNING: DATA RACE
[2020-11-26T05:54:31.229Z] Write at 0x00c000155afe by goroutine 138:
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/sessionctx/variable.(*SessionVars).SetSystemVar()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/sessionctx/variable/session.go:1357 +0x3d3d
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/sessionctx/variable.SetSessionSystemVar()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/sessionctx/variable/varsutil.go:228 +0x1b9
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.(*SetExecutor).setSysVariable()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/set.go:187 +0x19e0
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.(*SetExecutor).Next()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/set.go:108 +0x308
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.Next()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/executor.go:253 +0x27d
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelayExecutor()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/adapter.go:519 +0x38e
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelay()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/adapter.go:401 +0x254
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.(*ExecStmt).Exec()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/adapter.go:354 +0x3f6
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.runStmt()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/tidb.go:308 +0x2f2
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).executeStatement()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:1082 +0xd9
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).execute()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:1194 +0xaa2
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).Execute()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:1125 +0xee
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/util/testkit.(*TestKit).Exec()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/util/testkit/testkit.go:151 +0x103
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/util/testkit.(*TestKit).MustExec()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/util/testkit/testkit.go:189 +0x91
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/infoschema_test.(*testTableSuite).TestStmtSummaryTable()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/infoschema/tables_test.go:900 +0xb2
[2020-11-26T05:54:31.229Z]   runtime.call32()
[2020-11-26T05:54:31.229Z]       /usr/local/go/src/runtime/asm_amd64.s:539 +0x3a
[2020-11-26T05:54:31.229Z]   reflect.Value.Call()
[2020-11-26T05:54:31.229Z]       /usr/local/go/src/reflect/value.go:321 +0xd3
[2020-11-26T05:54:31.229Z]   github.com/pingcap/check.(*suiteRunner).forkTest.func1()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/pkg/mod/github.com/pingcap/check@v0.0.0-20200212061837-5e12011dc712/check.go:850 +0x9aa
[2020-11-26T05:54:31.229Z]   github.com/pingcap/check.(*suiteRunner).forkCall.func1()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/pkg/mod/github.com/pingcap/check@v0.0.0-20200212061837-5e12011dc712/check.go:739 +0x113
[2020-11-26T05:54:31.229Z] 
[2020-11-26T05:54:31.229Z] Previous read at 0x00c000155afe by goroutine 117:
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/executor.ResetContextOfStmt()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/executor/executor.go:1695 +0xb2c
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).execute()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:1170 +0x7de
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).Execute()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:1125 +0xee
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.execRestrictedSQL()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:836 +0x18f
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).ExecRestrictedSQLWithContext()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:779 +0x204
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/session.(*session).ExecRestrictedSQL()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/session/session.go:753 +0x92
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/bindinfo.(*BindHandle).Update()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/bindinfo/handle.go:137 +0x16c
[2020-11-26T05:54:31.229Z]   github.com/pingcap/tidb/domain.(*Domain).globalBindHandleWorkerLoop.func1()
[2020-11-26T05:54:31.229Z]       /home/jenkins/agent/workspace/tidb_ghpr_unit_test/go/src/github.com/pingcap/tidb/domain/domain.go:931 +0x254

@Reminiscent
Copy link
Contributor

/run-all-tests

@Reminiscent
Copy link
Contributor

@SunRunAway @lzmhhh123 PTAL. Please help merge. Thanks!

@lzmhhh123
Copy link
Contributor

/merge

@ti-srebot
Copy link
Contributor Author

Your auto merge job has been accepted, waiting for:

  • 20889
  • 21209
  • 21209
  • 21303
  • 21142

@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot ti-srebot merged commit 7e06ff5 into pingcap:release-4.0 Nov 26, 2020
@tiancaiamao tiancaiamao deleted the release-4.0-06e99582d89b branch November 26, 2020 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
severity/major sig/planner SIG: Planner status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2. type/bugfix This PR fixes a bug. type/4.0-cherry-pick
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants