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

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

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 6.3.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Fully Compatible
    • QO 2022-11-14, QO 2022-11-28

      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".

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

              Created:
              Updated:
              Resolved: