Skip to content

Rearrange logical optimizing rule  #55231

@AilinKid

Description

@AilinKid

Enhancement

This is a special topic campaign about first-time contributions that are friendly for academic open-source credits, with no hard-core database logic inside. Still, it is a great window for stepping deep into the charm of TiDB optimizer. Here is an example, #55226, this pull request contain the interface refactoring, you should focus on the change of rule_build_key_info.go about moving and classifying current logical rules.

currently, tidb optimizing logical rules are put in the planner/core pkg with the prefix rule_, inside these files it may rely on logical operator pkg to do the type check and rule asserting. Some of it may have little coupling with planner/core pkg itselves. When we try to move and classify these rules into planner/rule pkg, we should think twice about how to solve these back awards dependencies. The healthy pkg reference graph should be like below:

image

some special cases'(complex rule file migrating) scope will become even bigger than the pictures show, you can contact me @AilinKid and @hawkingrei to talk about it.

You are appreciated for making a detailed description of what your pull request has done. Of course,

  • first, you should claim and comment on which rule_file you picked behind this issue, click the checkbox below at the same time,
  • then, after you go through the code, you can modify the same comment to add what's your basic idea about it.
  • after @AilinKid and @hawkingrei approve your idea, you can file your pull request. This is to avoid wasting time on the wrong way too much, describing your idea is much cheaper, isn't it? Thank you so much for reading until here.
  • rule_aggregation_elimination.go @minami-lvgs
  • rule_aggregation_push_down.go
  • rule_aggregation_skew_rewrite.go
  • rule_collect_plan_stats.go @hawkingrei
  • rule_column_pruning.go
  • rule_constant_propagation.go @qingfeng777
  • rule_decorrelate.go
  • rule_derive_topn_from_window.go
  • rule_eliminate_projection.go
  • rule_generate_column_substitute.go
  • rule_inject_extra_projection.go
  • rule_join_elimination.go
  • rule_join_reorder.go
  • rule_join_reorder_dp.go
  • rule_join_reorder_greedy.go
  • rule_max_min_eliminate.go
  • rule_outer_to_inner_join.go
  • rule_partition_processor.go
  • rule_predicate_push_down.go
  • rule_predicate_simplification.go
  • rule_push_down_sequence.go
  • rule_resolve_grouping_expand.go
  • rule_result_reorder.go
  • rule_semi_join_rewrite.go
  • rule_topn_push_down.go @orthur2

First Time Contributor

first time contributor with tag in your pull request like below
image
After it merged, you can reach @billmay for your souvenir

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueDenotes an issue ready for a new contributor, according to the "help wanted" guidelines.help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.sig/plannerSIG: Plannertype/enhancementThe issue or PR belongs to an enhancement.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions