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

session, ddl: amend txn correctly when "modify column" needs reorg data with tidb_enable_amend_pessimistic_txn=on. #26269

Merged
merged 4 commits into from
Jul 15, 2021

Conversation

zimulala
Copy link
Contributor

@zimulala zimulala commented Jul 15, 2021

What problem does this PR solve?

Issue Number: close #26203

Problem Summary:
Columns exist in an intermediate state when we support modifying the column type (which requires reorg the data). So we can't just check the public state columns when we check whether the operation is amendable.

What is changed and how it works?

Proposal: xxx

What's Changed:

Use WritableCols instead of Cols.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No code

Release note

  • amend transactions correctly when "modify column" needs reorg data with tidb_enable_amend_pessimistic_txn=on.

@zimulala zimulala added type/bugfix This PR fixes a bug. sig/transaction SIG:Transaction sig/sql-infra SIG: SQL Infra needs-cherry-pick-release-5.1 labels Jul 15, 2021
@ti-chi-bot ti-chi-bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Jul 15, 2021
@qw4990
Copy link
Contributor

qw4990 commented Jul 15, 2021

/run-all-tests

@zimulala
Copy link
Contributor Author

PTAL @cfzjywxk @AilinKid @wjhuang2016

@@ -194,7 +194,7 @@ func colChangeAmendable(colAtStart *model.ColumnInfo, colAtCommit *model.ColumnI
// collectModifyColAmendOps is used to check if there is only column size increasing change.Other column type changes
// such as column change from nullable to not null or column type change are not supported by now.
func (a *amendCollector) collectModifyColAmendOps(tblAtStart, tblAtCommit table.Table) ([]amendOp, error) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this constraint check there is only column size increasing change still hold for this check function collectModifyColAmendOps by now or do we need to enhance it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

When modifying the column type (which requires reorg the data), the column ID is changed. It will return the error directly. So we needn't update colChangeAmendable. Besides, we use CheckModifyTypeCompatible in colChangeAmendable which also updated in column type change(with reorg data).

Copy link
Contributor

@cfzjywxk cfzjywxk 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-chi-bot ti-chi-bot added the status/LGT1 Indicates that a PR has LGTM 1. label Jul 15, 2021
Copy link
Contributor

@AilinKid AilinKid left a comment

Choose a reason for hiding this comment

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

Rest LGTM

ddl/db_test.go Show resolved Hide resolved
@ti-chi-bot
Copy link
Member

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • AilinKid
  • cfzjywxk

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@ti-chi-bot ti-chi-bot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Jul 15, 2021
@zimulala zimulala force-pushed the zimuxia/amend-txt-ctc branch from 8426007 to a4f3e6a Compare July 15, 2021 08:18
@AilinKid
Copy link
Contributor

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

Commit hash: 29b1b97

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Jul 15, 2021
@ti-chi-bot ti-chi-bot merged commit 6e72be0 into pingcap:master Jul 15, 2021
ti-srebot pushed a commit to ti-srebot/tidb that referenced this pull request Jul 15, 2021
@ti-srebot
Copy link
Contributor

cherry pick to release-5.1 in PR #26273

@zimulala zimulala deleted the zimuxia/amend-txt-ctc branch July 15, 2021 08:33
ti-chi-bot pushed a commit that referenced this pull request Jul 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-cherry-pick-release-5.1 sig/sql-infra SIG: SQL Infra sig/transaction SIG:Transaction size/M Denotes a PR that changes 30-99 lines, ignoring generated files. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Data may be lost when changing column type with tidb_enable_amend_pessimistic_txn=on.
6 participants