Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-2314

Verify RexNode transformations by evaluating before and after expressions against sample values

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.17.0
    • None
    • None

    Description

      Verify transformations of RexNode expressions (such as simplification, see class RexSimplify) by evaluating before and after expressions against sample values.

      Given an expression, say ($0 < $1) IS NOT NULL we can bind $0 and $1 to values (0, 1, null) and evaluate the 9 combinations. We can also evaluate the simplified expression $0 IS NOT NULL AND $1 IS NOT NULL and see whether it gives the same value for each of the combinations.

      We can add this checking to existing tests with little effort. It will improve confidence that we handle 3-valued logic correctly.

      As part of this task, we will create an interpreter class RexInterpreter that evaluates RexNode expressions for common operators without generating code. It is not very efficient and does not cover very many types, functions and operators, but should be easy for people to extend to add a few more.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            julianhyde Julian Hyde
            julianhyde Julian Hyde
            Votes:
            2 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment