Goals for this task:
Implement visit(ExpressionEncStrContains*) in our IntentionPreVisitor specialization.
Implement visit(ExpressionEncStrContains*) in IntentionInVisitorBase.
Implement visit(ExpressionEncStrContains*) in IntentionPostVisitorBase.
Performing the above items should result in the constant literal value in ExpressionEncStrContains being replaced with the placeholder.
Testing:
Sanity check test, can we add a test in fle/agg.js or fle/find.js which checks that we can't use $encStrContains a FLE1 encryption schema?
Expression_analysis_test.cpp: Add test to EvaluatedExpressionsCorrectlyReturnNotEncrypted which checks that new expressions return an unencrypted value (i.e evaluates to bool).
Fle_match_expression_test.cpp: Here we can add unit tests for checking that ExpressionEncStrEndsWith gets replaced with a placeholder by FLEMatchExpression.
We can add query analysis jstests in a follow-up ticket.