10000 enh(tmq): optimize update tablelist for topic of stable with filter when alter tag by wangmm0220 · Pull Request #34417 · taosdata/TDengine · GitHub
[go: up one dir, main page]

Skip to content

Conversation

@wangmm0220
Copy link
Contributor

…en alter tag

Description

Issue(s)

  • Close/close/Fix/fix/Resolve/resolve: Issue Link

Checklist

Please check the items in the checklist if applicable.

  • Is the user manual updated?
  • Are the test cases passed and automated?
  • Is there no significant decrease in test coverage?

Copilot AI review requested due to automatic review settings January 27, 2026 09:12
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @wangmm0220, 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 primarily focuses on enhancing the efficiency and precision of table list management and filtering, particularly for Time-Series Message Queue (TMQ) operations and when altering table tags. By introducing the ability to filter based on specific tag column IDs, the system can now perform more targeted updates and reduce unnecessary processing, leading to improved performance. Additionally, a correction to the TMQ consumer connection type ensures proper functionality.

Highlights

  • Refactored Table List Filtering Logic: The core filtering function doFilterByTagCond has been significantly refactored. It now accepts a cidList (column ID list) to enable more precise filtering based on specific tag columns, and its internal logic for handling IN operators and optimizing tbname conditions has been improved.
  • Dynamic Tag Column-based Updates: During ALTER TABLE operations that modify tag values, the system now dynamically constructs a cidList of affected tag columns. This cidList is then passed to tqUpdateTbUidList and qSubFilterTableList to ensure that table lists are updated and filtered with greater granularity and efficiency.
  • Streamlined qSubFilterTableList: The qSubFilterTableList function, responsible for filtering table lists for TMQ subscriptions, has been simplified by directly utilizing the refactored doFilterByTagCond and passing the cidList parameter.
  • TMQ Consumer Connection Type Correction: The connection type for TMQ consumers in taos_connect_internal has been corrected from CONN_TYPE__TMQ to CONN_TYPE__QUERY, addressing a potential issue with how TMQ consumers establish connections.

🧠 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 Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor
@gemini-code-assist gemini-code-assist bot left a 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 introduces an optimization for updating the table list for topics on stable tables when a tag is altered. The core idea is to pass the column IDs of the altered tags down to the filtering logic, allowing it to skip re-evaluation if the altered tags are not part of the filter conditions. The changes span across several files to plumb this information through. While the optimization logic is sound, I've found a couple of issues related to error handling and correctness in the implementation that need to be addressed.

Copy link
Contributor
Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR aims to optimize table list updates for TMQ topics with stable (super table) filters when tag values are altered. The optimization passes a list of changed column IDs (cidList) through the call chain to enable more selective filtering, avoiding unnecessary re-evaluation of tag conditions that don't involve the changed columns.

Changes:

  • Extended function signatures to pass cidList parameter through the executor and TMQ subsystems
  • Refactored tag condition filtering logic in executil.c to support column-specific filtering optimization
  • Modified vnode tag alteration handling to construct and pass the list of altered column IDs
  • Changed TMQ consumer connection type from CONN_TYPE__TMQ to CONN_TYPE__QUERY

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
include/libs/executor/executor.h Added cidList parameter to qSubFilterTableList function signature
source/libs/executor/inc/executil.h Updated doFilterByTagCond signature to accept cidList and removed addUid and listAdded parameters
source/libs/executor/src/executor.c Removed doFilterTableByTagCond wrapper function and updated to call doFilterByTagCond directly with new signature
source/libs/executor/src/executil.c Major refactoring: inverted checkTagCond logic, extracted getTableListInInOperator function, modified tag filtering to check if altered columns are involved
source/dnode/vnode/src/vnd/vnodeSvr.c Added logic to construct cidList from altered tag information and pass it to tqUpdateTbUidList
source/dnode/vnode/src/inc/vnodeInt.h Updated tqUpdateTbUidList function signature
source/dnode/vnode/src/tq/tqRead.c Updated to accept and forward cidList parameter
source/dnode/vnode/src/meta/metaQuery.c Added check to skip tables that already have tag values populated
source/client/src/clientTmq.c Changed connection type from CONN_TYPE__TMQ to CONN_TYPE__QUERY

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0