Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-70224

[CQF] Add rewrite to push not through EvalFilter when possible

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 6.3.0-rc0
    • None
    • None
    • None
    • Fully Compatible
    • QO 2022-11-14, QO 2022-11-28

    Description

      This rewrite would push a UnaryOp[not] through an EvalFilter under certain conditions. For example UnaryOp[not] EvalFilter PathCompare[eq] Constant[2] --> EvalFilter PathCompare[neq] Constant[2]

      This is not always correct when the path below the EvalFilter contains a Traverse. For example, the following rewrite is not correct: 
      UnaryOp[not] EvalFilter PathGet["a] PathTraverse[1] PathCompare[eq] Constant[2] --> EvalFilter PathGet["a] PathTraverse[1] PathCompare[neq] Constant[2]

      This would have incorrect behavior for arrays at path "a".

      Attachments

        Activity

          People

            david.percy@mongodb.com David Percy
            hana.pearlman@mongodb.com Hana Pearlman
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: