nontransactional dml FAQ about alias (#22523)#22537
nontransactional dml FAQ about alias (#22523)#22537ti-chi-bot[bot] merged 2 commits intopingcap:release-7.5from
Conversation
Co-authored-by: xixirangrang <hfxsd@hotmail.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the TiDB documentation by addressing a common Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request adds documentation about a potential Unknown column error when using table aliases in non-transactional DML statements. The changes are good and add important information for users. I've provided a few suggestions to improve the wording for clarity and to better align with the documentation style guide.
Note: Security Review has been skipped due to the limited scope of the PR.
|
|
||
| ### The `Unknown column '<alias>.<column>' in 'where clause'` error occurs when using table aliases in non-transactional DML statements | ||
|
|
||
| When you execute a non-transactional DML statement, TiDB internally constructs a query for dividing batches and then generates the actual split execution statements. You can use [`DRY RUN QUERY`](/non-transactional-dml.md#query-the-batch-dividing-statement) and [`DRY RUN`](/non-transactional-dml.md#query-the-statements-corresponding-to-the-first-and-the-last-batches) to view these two types of statements, respectively. |
There was a problem hiding this comment.
For better readability and a more active voice, consider rephrasing "a query for dividing batches" to "a query to divide batches".
| When you execute a non-transactional DML statement, TiDB internally constructs a query for dividing batches and then generates the actual split execution statements. You can use [`DRY RUN QUERY`](/non-transactional-dml.md#query-the-batch-dividing-statement) and [`DRY RUN`](/non-transactional-dml.md#query-the-statements-corresponding-to-the-first-and-the-last-batches) to view these two types of statements, respectively. | |
| When you execute a non-transactional DML statement, TiDB internally constructs a query to divide batches and then generates the actual split execution statements. You can use [`DRY RUN QUERY`](/non-transactional-dml.md#query-the-batch-dividing-statement) and [`DRY RUN`](/non-transactional-dml.md#query-the-statements-corresponding-to-the-first-and-the-last-batches) to view these two types of statements, respectively. |
References
- The style guide recommends avoiding unnecessary words and using a clear sentence structure. The suggested change is slightly more concise and active. (link)
|
|
||
| - Avoid using table aliases in non-transactional DML statements. For example, rewrite `t.c1` as `c1` or `t_old.c1`. | ||
| - When specifying the [shard column](#parameter-description), do not use table aliases. For example, rewrite `BATCH ON t.id` as `BATCH ON db.t_old.id` or `BATCH ON t_old.id`. | ||
| - Before execution, use `DRY RUN QUERY` or `DRY RUN` to preview the rewritten statements and verify that they meet your expectations. |
There was a problem hiding this comment.
To improve clarity, I suggest replacing the phrase "verify that they meet your expectations" with "verify their correctness". The latter is more specific about what the user should check.
| - Before execution, use `DRY RUN QUERY` or `DRY RUN` to preview the rewritten statements and verify that they meet your expectations. | |
| - Before execution, use `DRY RUN QUERY` or `DRY RUN` to preview the rewritten statements and verify their correctness. |
References
- The style guide recommends favoring clarity. The suggested wording 'verify their correctness' is more specific and clearer for the user than 'meet your expectations'. (link)
| > **Note:** | ||
| > | ||
| > The `BATCH` statement is internally rewritten and split into multiple DML statements during execution. In the current version, table aliases might not be preserved, which can result in errors such as `Unknown column '<alias>.<column>' in 'where clause'`. To avoid this issue, do not use table aliases. Before execution, use `DRY RUN QUERY` or `DRY RUN` to preview the split statements before execution. For more information, see [Non-Transactional DML Statements](/non-transactional-dml.md). |
There was a problem hiding this comment.
To improve clarity and align with the style guide's recommendation to use the second person ("you"), I suggest rephrasing this note. The proposed version is more direct and easier for users to understand.
| > **Note:** | |
| > | |
| > The `BATCH` statement is internally rewritten and split into multiple DML statements during execution. In the current version, table aliases might not be preserved, which can result in errors such as `Unknown column '<alias>.<column>' in 'where clause'`. To avoid this issue, do not use table aliases. Before execution, use `DRY RUN QUERY` or `DRY RUN` to preview the split statements before execution. For more information, see [Non-Transactional DML Statements](/non-transactional-dml.md). | |
| > **Note:** | |
| > | |
| > When you use the `BATCH` statement, TiDB internally rewrites and splits it into multiple DML statements for execution. In the current version, table aliases might not be preserved in the rewritten statements, which can cause an `Unknown column '<alias>.<column>' in 'where clause'` error. To avoid this issue, it is recommended to avoid using table aliases. You can also use `DRY RUN QUERY` or `DRY RUN` to preview the rewritten statements. For more information, see [Non-Transactional DML Statements](/non-transactional-dml.md). |
References
- The style guide recommends writing in the second person ('you') when addressing users to make the documentation easier to understand. (link)
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: Oreoxmt The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This is an automated cherry-pick of #22523
First-time contributors' checklist
What is changed, added or deleted? (Required)
Added FAQ about
Unknown columnerror when using alias.Which TiDB version(s) do your changes apply to? (Required)
Tips for choosing the affected version(s):
By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.
For details, see tips for choosing the affected versions (in Chinese).
What is the related PR or file link(s)?
Do your changes match any of the following descriptions?