-
Notifications
You must be signed in to change notification settings - Fork 298
refactor(conn): replace dbutil.GetTables with conn.GetTables for cons… #12481
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
base: master
Are you sure you want to change the base?
Conversation
|
[FORMAT CHECKER NOTIFICATION] Notice: To remove the 📖 For more info, you can check the "Contribute Code" section in the development guide. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Summary of ChangesHello @GMHDBJD, 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 undertakes a refactoring effort to enhance code consistency by relocating the 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. 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request refactors the code to use conn.GetTables instead of dbutil.GetTables, which is a good improvement for code organization. The implementation of the new conn.GetTables function is mostly correct, but I've suggested a couple of minor improvements for consistency and idiomatic Go.
A more critical issue is that the unit tests in dm/pkg/conn/db_test.go and dm/master/openapi_view_test.go appear to be broken by this change. They still mock the old SQL query from dbutil.GetTables (SHOW FULL TABLES ... WHERE ...). Please update the mocked queries to SHOW FULL TABLES IN ... without the WHERE clause to match the new implementation in conn.GetTables.
| if len(cols) < 2 { | ||
| return nil, errors.New("SHOW FULL TABLES returned less than 2 columns") | ||
| } |
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.
For consistency with the error handling in this package, it's better to return a terror error instead of a raw error created with errors.New. You can use terror.ErrDBUnExpect.Generate for this.
| if len(cols) < 2 { | |
| return nil, errors.New("SHOW FULL TABLES returned less than 2 columns") | |
| } | |
| if len(cols) < 2 { | |
| return nil, terror.ErrDBUnExpect.Generate("SHOW FULL TABLES returned less than 2 columns") | |
| } |
| var dummy interface{} | ||
| scanArgs[i] = &dummy |
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.
This loop for creating dummy scan arguments can be made more efficient and idiomatic. Instead of declaring a new dummy variable in each iteration, you can allocate space for the columns you want to ignore directly. Using sql.RawBytes is a good practice for this as it can avoid extra allocations.
| var dummy interface{} | |
| scanArgs[i] = &dummy | |
| scanArgs[i] = new(sql.RawBytes) |
|
@GMHDBJD: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
…istency
What problem does this PR solve?
Issue Number: close #xxx
What is changed and how it works?
Check List
Tests
Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note