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

Optimize various aspects of filter.go #1287

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dofson
Copy link

@dofson dofson commented Dec 26, 2024

本PR对filter进行了各方面的优化

  1. 中文注释:添加了详细的中文注释,解释接口、结构、方法和每个核心函数的功能。如在 Factorize 和 ParseSelector 中,明确说明了每一步的逻辑处理目的

  2. 改进了错误信息:如在 ParseSelector 和 buildValueMatcher 中,如果字段未定义或类型不支持,会抛出更明确的错误信息,并显示具体问题字段。

  3. 性能优化:
    3.1 使用 jsonparser.ObjectEach 遍历 JSON 对象直接处理,避免不必要的中间对象创建,提升性能。
    3.2 减少重复逻辑:将 JSON 类型到 Tigris 类型的转换封装为 toTigrisType 和 jsonToTigrisType 函数。

  4. 逻辑优化:
    4.1 合并冗余逻辑:在 ParseSelector 中,对 dataType 的处理使用了封装函数,简化了类型判断和匹配。
    4.2 增强模块化:排序规则的构建 buildCollation 和值匹配器 buildValueMatcher 独立为函数,便于后续扩展。

对filter函数进行的优化内容:
(1)中文注释:添加了详细的中文注释,解释接口、结构、方法和每个核心函数的功能。如在 Factorize 和 ParseSelector 中,明确说明了每一步的逻辑处理目的 
(2)改进了错误信息:如在 ParseSelector 和 buildValueMatcher 中,如果字段未定义或类型不支持,会抛出更明确的错误信息,并显示具体问题字段。 
(3)性能优化:使用 jsonparser.ObjectEach 遍历 JSON 对象直接处理,避免不必要的中间对象创建,提升性能。
       减少重复逻辑:将 JSON 类型到 Tigris 类型的转换封装为 toTigrisType 和 jsonToTigrisType 函数
(4)逻辑优化:
         合并冗余逻辑:在 ParseSelector 中,对 dataType 的处理使用了封装函数,简化了类型判断和匹配。
        增强模块化:排序规则的构建 buildCollation 和值匹配器 buildValueMatcher 独立为函数,便于后续扩展。
@dofson dofson changed the title Update filter.go Optimize various aspects of filter.go Dec 28, 2024
dofson

This comment was marked as resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant