-
Notifications
You must be signed in to change notification settings - Fork 5.8k
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
txn: refactor ts acquisition within build and execute phases #35376
Conversation
[REVIEW NOTIFICATION] This pull request has been approved by:
To complete the pull request process, please ask the reviewers in the list to review by filling The full list of commands accepted by this bot can be found here. Reviewer can indicate their review by submitting an approval review. |
Code Coverage Details: https://codecov.io/github/pingcap/tidb/commit/1092f636253b4a7af28202aa2f8176e8f226e145 |
Signed-off-by: SpadeA-Tang <u6748471@anu.edu.au>
/run-unit-test |
// Note: For point get and batch point get (name it plan), if one of the ancestor node is update/delete/physicalLock, | ||
// we should check whether the plan.Lock is true or false. See comments in needNotToBeOptimized. | ||
// inLockOrWriteStmt = true means one of the ancestor node is update/delete/physicalLock. | ||
func optimizeForNotFetchingLatestTS(plan plannercore.Plan, inLockOrWriteStmt bool) bool { |
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.
maybe change "optimizeForNotFetchingLatestTS" to "notNeedGetLatesTSFromPD", it looks better to understand, and I don't recommend using negated words as function names.
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.
Okey,I will change it.
case *plannercore.BatchPointGetPlan: | ||
return !inLockOrWriteStmt || v.Lock | ||
case plannercore.PhysicalPlan: | ||
if v.Children() == nil { |
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.
I think you can remove this if v.Children() == nil
block, for range
can process nil
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.
It returns false if v.Chilren() == nil.
/run-build |
/merge |
This pull request has been accepted and is ready to merge. Commit hash: 0d3e267
|
…to removeTxnForUpdateTS
/merge |
This pull request has been accepted and is ready to merge. Commit hash: 1092f63
|
TiDB MergeCI notify
|
* upstream/master: (57 commits) types: fix incompatible implementation of jsonpath extraction (pingcap#35320) planner: fix TRACE PLAN TARGET = 'estimation' panic when meeting partition table (pingcap#35743) *: Add `testfork.RunTest` to run multiple tests in one function (pingcap#35746) sessionctx/variable: add tests to ensure skipInit can be removed (pingcap#35703) helper: request another PD if one of them is unavailable (pingcap#35750) metrics: add cached table related metrics to grafana panel (pingcap#34718) expression: use cloned RetType at `evaluateExprWithNull` when it may be changed. (pingcap#35759) executor: fix left join on partition table generate invalid lock key (pingcap#35732) readme: remove adopters (pingcap/docs#8725) (pingcap#35124) *: only add default value for final aggregation to fix the aggregate push down (partition) union case (pingcap#35443) planner: fix the wrong cost formula of MPPExchanger on cost model ver2 (pingcap#35718) sessionctx: support encoding and decoding statement context (pingcap#35688) txn: refactor ts acquisition within build and execute phases (pingcap#35376) ddl: for schema-level DDL method parameter is now XXXStmt (pingcap#35722) *: enable gofmt (pingcap#35721) planner: disable collate clause support for enum or set column (pingcap#35684) *: Provide a util to "pause" session in uint test (pingcap#35529) ddl: implement the core for multi-schema change (pingcap#35429) parser: XXXDatabaseStmt now use CIStr for DB name (pingcap#35668) *: remove real tikv test on github actions (pingcap#35710) ...
What problem does this PR solve?
Issue Number: close #35377
Problem Summary:
Although we have transaction context provider now, we still update and get
forUpdateTS
fromTransactionContext
. For example,updateForUpdateTSIfNeeded
will updateforUpdateTS
inTransactionContext
in some cases, and we will getforUpdateTS
fromTransactionContext
sometimes but not from transaction context provider.It also fixes the bug in the AdviseOptimizeWithPlan within Pessimistic RR where old implementation can omit some cases.
What is changed and how it works?
In build and execute phases, we use context provider to get for update ts if needed.
updateForUpdateTSIfNeeded
is removed and the update offorUpdateTS
inTransactionContext
is only performed by the relevant provider.Check List
Tests