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

sessionctx: support encoding and decoding prepared statements #35808

Merged
merged 7 commits into from
Jun 30, 2022

Conversation

djshow832
Copy link
Contributor

What problem does this PR solve?

Issue Number: close #35689

Problem Summary:
support encoding and decoding prepared statements

What is changed and how it works?

  • Register TiDBContext to session.sessionStatesHandlers to handle the encoding and decoding of prepared statements.
  • Encode and decode prepared statements in TiDBContext.
  • Remove TiDBContext.currentDB because it's not used now.

Notice:

  • The prepared statement cannot be decoded if the table is dropped / current db is dropped / privilege is updated / sql_mode is updated after preparing. I filed another issue for this: lazily replaying prepared statements for session manager #35806. I'll address it in another PR with a lower priority.
  • I have added test cases for the scenarios above, except for the privilege, because I found another privilege bug of prepared statements: Privilege check is skipped for PREPARE statement #35784.
  • Encoding prepared statements should report an error when the statement is waiting for COM_STMT_EXECUTE (after COM_STMT_SEND_LONG_DATA) or COM_STMT_FETCH (in useCursor mode). I'll do it in another PR.
  • Metrics / slow log / statements_summary / audit log should not record the PREPARE statement when it's replayed. I'll check it in the future, with a lower priority.

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.

None

@djshow832 djshow832 requested a review from a team as a code owner June 29, 2022 02:19
@ti-chi-bot
Copy link
Member

ti-chi-bot commented Jun 29, 2022

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • bb7133
  • xhebox

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 release-note-none Denotes a PR that doesn't merit a release note. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Jun 29, 2022
@djshow832 djshow832 requested a review from xhebox June 29, 2022 02:19
@sre-bot
Copy link
Contributor

sre-bot commented Jun 29, 2022

Copy link
Contributor

@xhebox xhebox left a comment

Choose a reason for hiding this comment

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

LGTM

session/session.go Outdated Show resolved Hide resolved
@ti-chi-bot ti-chi-bot added the status/LGT1 Indicates that a PR has LGTM 1. label Jun 29, 2022
session/session.go Outdated Show resolved Hide resolved
Copy link
Member

@bb7133 bb7133 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 status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Jun 30, 2022
@bb7133
Copy link
Member

bb7133 commented Jun 30, 2022

/merge

@ti-chi-bot
Copy link
Member

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

Commit hash: 78acb63

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

sre-bot commented Jun 30, 2022

TiDB MergeCI notify

🔴 Bad News! New failing [1] 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 17 min New failing
idc-jenkins-ci/integration-cdc-test 🟢 all 35 tests passed 23 min Existing passed
idc-jenkins-ci-tidb/common-test 🟢 all 12 tests passed 10 min Existing passed
idc-jenkins-ci-tidb/tics-test 🟢 all 1 tests passed 5 min 53 sec Existing passed
idc-jenkins-ci-tidb/integration-ddl-test 🟢 all 6 tests passed 5 min 41 sec Existing passed
idc-jenkins-ci-tidb/sqllogic-test-2 🟢 all 28 tests passed 5 min 38 sec Existing passed
idc-jenkins-ci-tidb/sqllogic-test-1 🟢 all 26 tests passed 4 min 51 sec Existing passed
idc-jenkins-ci-tidb/mybatis-test 🟢 all 1 tests passed 3 min 2 sec Existing passed
idc-jenkins-ci-tidb/integration-compatibility-test 🟢 all 1 tests passed 2 min 41 sec Existing passed
idc-jenkins-ci-tidb/plugin-test 🟢 build success, plugin test success 4min Existing passed

@djshow832 djshow832 deleted the encode_prep_stmt branch June 30, 2022 06:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release-note-none Denotes a PR that doesn't merit a release note. size/XXL Denotes a PR that changes 1000+ 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.

support encoding prepared statements for session manager
5 participants