Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.0.0-incubating
    • Component/s: None
    • Labels:
      None

      Description

      I propose a new naming convention for planner rules. This change would rename existing rules.

      The naming convention is advisory, not mandatory. Rule authors would not need to follow it if they don’t feel that it makes things clearer.

      Discussion from the dev list:

      As the number of rules grows, it becomes more difficult to find out whether a similar rule has already been added. The fact that there are several ways to name a rule adds to the confusion.

      For instance, consider a rule that converts ‘join(project( x ), project( y ))’ into ‘project(join(x, y))’. The actual rule is called PullUpProjectsAboveJoinRule but it could equally be called PushJoinThroughProjectsRule.

      There are lots of rules called PushXxxThroughYyyRule, too.

      I propose the naming convention

      <Reltype1><Reltype2>[…]<Verb>Rule

      where ReltypeN is the class of the Nth RelNode matched, in depth-first order, ignoring unimportant operands, and removing any ‘Rel’ suffix
      Verb is what happens — typically Transpose, Swap, Merge, Optimize.

      Thus:

      • PullUpProjectsAboveJoinRule becomes JoinProjectTransposeRule
      • PushAggregateThroughUnionRule becomes AggregateUnionTransposeRule
      • MergeProjectRule becomes ProjectMergeRule
      • MergeFilterOntoCalcRule becomes FilterCalcMergeRule
      • EnumerableJoinRule remains EnumerableJoinRule (Or how about JoinAsEnumerableRule?)
      • SwapJoinRule becomes JoinSwapInputsRule

        Issue Links

          Activity

          Hide
          julianhyde Julian Hyde added a comment -

          Closing now that 1.0.0-incubating has been released.

          Show
          julianhyde Julian Hyde added a comment - Closing now that 1.0.0-incubating has been released.
          Show
          julianhyde Julian Hyde added a comment - Fixed in http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/a611d645ad754844a39f3d98f5f814f13dbd9404 (move files) and http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/a0ba73cd2de76696b96a1cd828d2aa4d3ef9eb55 (fix up). CALCITE-296 has an attachment that describes the before:after name mapping.

            People

            • Assignee:
              julianhyde Julian Hyde
              Reporter:
              julianhyde Julian Hyde
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development