Skip to content

Commit

Permalink
CSHARP-5067: Filters with boolean fields or properties should use cor…
Browse files Browse the repository at this point in the history
…rect representation of true.
  • Loading branch information
rstam committed Apr 26, 2024
1 parent 8af9316 commit b15e1b6
Show file tree
Hide file tree
Showing 4 changed files with 500 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
using System.Linq.Expressions;
using MongoDB.Bson.Serialization;
using MongoDB.Driver.Linq.Linq3Implementation.Ast.Filters;
using MongoDB.Driver.Linq.Linq3Implementation.Misc;
using MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators;
using MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ExpressionTranslators;
using MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.MethodTranslators;
Expand Down Expand Up @@ -118,7 +119,8 @@ private static AstFilter TranslateUsingQueryOperators(TranslationContext context
if (expression.Type == typeof(bool))
{
var field = ExpressionToFilterFieldTranslator.Translate(context, expression);
return AstFilter.Eq(field, true);
var serializedTrue = SerializationHelper.SerializeValue(field.Serializer, true);
return AstFilter.Eq(field, serializedTrue);
}

throw new ExpressionNotSupportedException(expression);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public static AstFilter Translate(TranslationContext context, MemberExpression e
if (fieldInfo.FieldType == typeof(bool))
{
var field = ExpressionToFilterFieldTranslator.Translate(context, expression);
return AstFilter.Eq(field, true);
var serializedTrue = SerializationHelper.SerializeValue(field.Serializer, true);
return AstFilter.Eq(field, serializedTrue);
}
}

Expand All @@ -50,7 +51,8 @@ public static AstFilter Translate(TranslationContext context, MemberExpression e
if (propertyInfo.PropertyType == typeof(bool))
{
var field = ExpressionToFilterFieldTranslator.Translate(context, expression);
return AstFilter.Eq(field, true);
var serializedTrue = SerializationHelper.SerializeValue(field.Serializer, true);
return AstFilter.Eq(field, serializedTrue);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

using System.Linq.Expressions;
using MongoDB.Driver.Linq.Linq3Implementation.Ast.Filters;
using MongoDB.Driver.Linq.Linq3Implementation.Misc;

namespace MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ExpressionTranslators
{
Expand All @@ -28,7 +29,8 @@ public static AstFilter Translate(TranslationContext context, ParameterExpressio
{
var serializer = context.KnownSerializersRegistry.GetSerializer(expression);
var field = AstFilter.Field(symbol.Name, serializer);
return AstFilter.Eq(field, true);
var serializedTrue = SerializationHelper.SerializeValue(field.Serializer, true);
return AstFilter.Eq(field, serializedTrue);
}
}

Expand Down

0 comments on commit b15e1b6

Please sign in to comment.