diff options
Diffstat (limited to 'src/mongo/db/matcher/expression.cpp')
| -rw-r--r-- | src/mongo/db/matcher/expression.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/mongo/db/matcher/expression.cpp b/src/mongo/db/matcher/expression.cpp index bb13e28a9e0..a228fd86916 100644 --- a/src/mongo/db/matcher/expression.cpp +++ b/src/mongo/db/matcher/expression.cpp @@ -175,6 +175,74 @@ void MatchExpression::addDependencies(DepsTracker* deps) const { _doAddDependencies(deps); } +bool MatchExpression::isInternalNodeWithPath(MatchType m) { + switch (m) { + case ELEM_MATCH_OBJECT: + case ELEM_MATCH_VALUE: + case INTERNAL_SCHEMA_OBJECT_MATCH: + case INTERNAL_SCHEMA_MATCH_ARRAY_INDEX: + // This node generates a child expression with a field that isn't prefixed by the path + // of the node. + case INTERNAL_SCHEMA_ALL_ELEM_MATCH_FROM_INDEX: + // This node generates a child expression with a field that isn't prefixed by the path + // of the node. + return true; + + case AND: + case OR: + case SIZE: + case EQ: + case LTE: + case LT: + case GT: + case GTE: + case REGEX: + case MOD: + case EXISTS: + case MATCH_IN: + case BITS_ALL_SET: + case BITS_ALL_CLEAR: + case BITS_ANY_SET: + case BITS_ANY_CLEAR: + case NOT: + case NOR: + case TYPE_OPERATOR: + case GEO: + case WHERE: + case EXPRESSION: + case ALWAYS_FALSE: + case ALWAYS_TRUE: + case GEO_NEAR: + case TEXT: + case INTERNAL_2D_POINT_IN_ANNULUS: + case INTERNAL_BUCKET_GEO_WITHIN: + case INTERNAL_EXPR_EQ: + case INTERNAL_EXPR_GT: + case INTERNAL_EXPR_GTE: + case INTERNAL_EXPR_LT: + case INTERNAL_EXPR_LTE: + case INTERNAL_SCHEMA_ALLOWED_PROPERTIES: + case INTERNAL_SCHEMA_BIN_DATA_ENCRYPTED_TYPE: + case INTERNAL_SCHEMA_BIN_DATA_FLE2_ENCRYPTED_TYPE: + case INTERNAL_SCHEMA_BIN_DATA_SUBTYPE: + case INTERNAL_SCHEMA_COND: + case INTERNAL_SCHEMA_EQ: + case INTERNAL_SCHEMA_FMOD: + case INTERNAL_SCHEMA_MAX_ITEMS: + case INTERNAL_SCHEMA_MAX_LENGTH: + case INTERNAL_SCHEMA_MAX_PROPERTIES: + case INTERNAL_SCHEMA_MIN_ITEMS: + case INTERNAL_SCHEMA_MIN_LENGTH: + case INTERNAL_SCHEMA_MIN_PROPERTIES: + case INTERNAL_SCHEMA_ROOT_DOC_EQ: + case INTERNAL_SCHEMA_TYPE: + case INTERNAL_SCHEMA_UNIQUE_ITEMS: + case INTERNAL_SCHEMA_XOR: + return false; + } + MONGO_UNREACHABLE; +} + MatchExpression::ErrorAnnotation::SchemaAnnotations::SchemaAnnotations( const BSONObj& jsonSchemaElement) { auto title = jsonSchemaElement[JSONSchemaParser::kSchemaTitleKeyword]; |
