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

table: fix cannot find the temp table when it's created in a transaction #35663

Merged
merged 3 commits into from
Jun 23, 2022

Conversation

djshow832
Copy link
Contributor

What problem does this PR solve?

Issue Number: close #35644

Problem Summary:
If a temporary table is created inside a transaction, it cannot be accessed, because:

  • When the transaction begins, the transaction needs to get a copy of the LocalTemporaryTables object from SessionVars. But getLocalTemporaryTables() returns nil instead of a LocalTemporaryTables object at that time.
  • Creating a temporary table creates a new LocalTemporaryTables object on SessionVars.
  • The transaction cannot read the LocalTemporaryTables object because it only references nil.

What is changed and how it works?

getLocalTemporaryTables() always returns a map.

Check List

Tests

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

Release note

Please refer to Release Notes Language Style Guide to write a quality release note.

- Fix the bug that a temporary table cannot be found if it's created in a transaction.

@ti-chi-bot
Copy link
Member

ti-chi-bot commented Jun 23, 2022

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • lcwangchao
  • tiancaiamao

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 the release-note Denotes a PR that will be considered when it comes time to generate release notes. label Jun 23, 2022
@ti-chi-bot ti-chi-bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Jun 23, 2022
@sre-bot
Copy link
Contributor

sre-bot commented Jun 23, 2022

@ti-chi-bot ti-chi-bot added the status/LGT1 Indicates that a PR has LGTM 1. label Jun 23, 2022
Copy link
Contributor

@tiancaiamao tiancaiamao left a comment

Choose a reason for hiding this comment

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

This may cause more object allocation in the hot code path and affect the performance.

@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 Jun 23, 2022
@djshow832
Copy link
Contributor Author

This may cause more object allocation in the hot code path and affect the performance.

I think it's fine because each session only allocates it once. @tiancaiamao

@djshow832
Copy link
Contributor Author

/merge

@ti-chi-bot
Copy link
Member

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

Commit hash: ce5522b

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Jun 23, 2022
@ti-chi-bot ti-chi-bot merged commit 011074c into pingcap:master Jun 23, 2022
@sre-bot
Copy link
Contributor

sre-bot commented Jun 23, 2022

TiDB MergeCI notify

🔴 Bad News! New failing [2] after this pr merged.
These new failed integration tests seem to be caused by the current PR, please try to fix these new failed integration tests, thanks!

CI Name Result Duration Compare with Parent commit
idc-jenkins-ci-tidb/integration-common-test 🟥 failed 1, success 10, total 11 34 min New failing
idc-jenkins-ci-tidb/integration-ddl-test 🟥 failed 1, success 5, total 6 7 min 57 sec New failing
idc-jenkins-ci-tidb/tics-test 🔴 failed 1, success 0, total 1 7 min 42 sec Existing failure
idc-jenkins-ci/integration-cdc-test 🟢 all 35 tests passed 27 min Existing passed
idc-jenkins-ci-tidb/common-test 🟢 all 12 tests passed 12 min Existing passed
idc-jenkins-ci-tidb/sqllogic-test-2 🟢 all 28 tests passed 8 min 42 sec Existing passed
idc-jenkins-ci-tidb/sqllogic-test-1 🟢 all 26 tests passed 8 min 11 sec Existing passed
idc-jenkins-ci-tidb/integration-compatibility-test 🟢 all 1 tests passed 3 min 21 sec Existing passed
idc-jenkins-ci-tidb/mybatis-test 🟢 all 1 tests passed 2 min 43 sec Existing passed
idc-jenkins-ci-tidb/plugin-test 🟢 build success, plugin test success 4min Existing passed

morgo added a commit to morgo/tidb that referenced this pull request Jun 24, 2022
* upstream/master: (38 commits)
  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)
  lightning: support disable scheduler by key range (pingcap#34130)
  Revert "planner: fix the wrong cost formula of MPPExchanger" (pingcap#35707)
  ddl, owner: refresh ddl sequence cache after becoming the owner (pingcap#35516)
  store/copr: fix tiflash integration test by disable paging on tiflash (pingcap#35674)
  planner: new cost formula for IndexJoin (pingcap#35671)
  BR: fix backup ranges total time summary log (pingcap#35552)
  raw_restore: fix the issue that raw restore rewrite the t prefix keys (pingcap#35641)
  table: fix cannot find the temp table when it's created in a transaction (pingcap#35663)
  metrics: replace histogram with counter for  DistSQLCoprCache (pingcap#35514)
  *: enable exportloopref  (pingcap#35680)
  types: fix bad error message for numeric conversion issue#32744 (pingcap#34047)
  *: enable ineffassign (pingcap#35670)
  config, sysvar: map `max-server-connections` to `max_connections` (pingcap#35453)
  *: enable durationcheck for nogo linter (pingcap#35661)
  *: fix issue of cast string as time is incompatible with MySQL (pingcap#35455)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release-note Denotes a PR that will be considered when it comes time to generate release notes. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Return "Can't get table tt" when create TEMPORARY table using select clause
5 participants