public void SqlBetweenScalarExpressionTest() { SqlBetweenScalarExpression threeBetweenFourAndFive = SqlBetweenScalarExpression.Create( SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(4)), SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(3)), SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(5)), not: false); AssertEvaluation(CosmosBoolean.Create(true), threeBetweenFourAndFive); SqlBetweenScalarExpression threeNotBetweenFourAndFive = SqlBetweenScalarExpression.Create( SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(4)), SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(3)), SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(5)), not: true); AssertEvaluation(CosmosBoolean.Create(false), threeNotBetweenFourAndFive); SqlBetweenScalarExpression trueBetweenTrueAndTrueNested = SqlBetweenScalarExpression.Create( SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(true)), threeBetweenFourAndFive, threeBetweenFourAndFive, not: false); AssertEvaluation(CosmosBoolean.Create(true), trueBetweenTrueAndTrueNested); }
public override int Visit(SqlBooleanLiteral sqlBooleanLiteral) { int hashCode = SqlBooleanLiteralHashCode; hashCode = CombineHashes(hashCode, sqlBooleanLiteral.Value ? SqlBooleanLiteralTrueHashCode : SqlBooleanLiteralFalseHashCode); return(hashCode); }
public static SqlScalarExpression GetCaseInsensitiveExpression(Expression expression) { if (expression is ConstantExpression inputExpression && inputExpression.Value is StringComparison comparisonValue && IgnoreCaseComparisons.Contains(comparisonValue)) { SqlBooleanLiteral literal = SqlBooleanLiteral.Create(true); return(SqlLiteralScalarExpression.Create(literal)); } return(null); }
public override bool Visit(SqlBooleanLiteral first, SqlObject secondAsObject) { if (!(secondAsObject is SqlBooleanLiteral second)) { return(false); } if (first.Value != second.Value) { return(false); } return(true); }
public static SqlScalarExpression GetCaseSensitivityExpression(Expression expression) { if (expression is ConstantExpression inputExpression && inputExpression.Value is StringComparison comparisonValue) { if (SensitiveCaseComparisons.Contains(comparisonValue)) { return(SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(false))); } else if (IgnoreCaseComparisons.Contains(comparisonValue)) { return(SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(true))); } } return(null); }
public override SqlObject VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { Contract.Requires(context != null); Contract.Requires(context.ChildCount == 1); Contract.Requires(context.children[0].ChildCount == 1); TerminalNodeImpl terminalNode = (TerminalNodeImpl)(context.children[0].GetChild(0)); SqlLiteralScalarExpression sqlLiteralScalarExpression; switch (terminalNode.Symbol.Type) { case sqlParser.STRING_LITERAL: string value = CstToAstVisitor.GetStringValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlStringLiteral.Create(value)); break; case sqlParser.NUMERIC_LITERAL: Number64 number64 = CstToAstVisitor.GetNumber64ValueFromNode(terminalNode); sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNumberLiteral.Create(number64)); break; case sqlParser.K_TRUE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(true)); break; case sqlParser.K_FALSE: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlBooleanLiteral.Create(false)); break; case sqlParser.K_NULL: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlNullLiteral.Create()); break; case sqlParser.K_UNDEFINED: sqlLiteralScalarExpression = SqlLiteralScalarExpression.Create(SqlUndefinedLiteral.Create()); break; default: throw new ArgumentOutOfRangeException($"Unknown symbol type: {terminalNode.Symbol.Type}"); } return(sqlLiteralScalarExpression); }
/// <summary> /// Constructs <see cref="SqlScalarExpression"/> from a geometry <see cref="JToken"/>. /// </summary> /// <param name="jToken">Json token.</param> /// <returns>Instance of <see cref="SqlScalarExpression"/>.</returns> private static SqlScalarExpression FromJToken(JToken jToken) { switch (jToken.Type) { case JTokenType.Array: return(new SqlArrayCreateScalarExpression(jToken.Select(FromJToken).ToArray())); case JTokenType.Boolean: SqlBooleanLiteral sqlBooleanLiteral = new SqlBooleanLiteral(jToken.Value <bool>()); return(new SqlLiteralScalarExpression(sqlBooleanLiteral)); case JTokenType.Null: return(new SqlLiteralScalarExpression(new SqlNullLiteral())); case JTokenType.String: SqlStringLiteral sqlStringLiteral = new SqlStringLiteral(jToken.Value <string>()); return(new SqlLiteralScalarExpression(sqlStringLiteral)); case JTokenType.Object: var properties = ((JObject)jToken).Properties() .Select( p => new SqlObjectProperty( new SqlPropertyName(p.Name), FromJToken(p.Value))) .ToArray(); return(new SqlObjectCreateScalarExpression(properties)); case JTokenType.Float: case JTokenType.Integer: SqlNumberLiteral sqlNumberLiteral = new SqlNumberLiteral(jToken.Value <double>()); return(new SqlLiteralScalarExpression(sqlNumberLiteral)); default: throw new DocumentQueryException(string.Format(CultureInfo.CurrentCulture, ClientResources.UnexpectedTokenType, jToken.Type)); } }
public override SqlObject VisitLiteral([NotNull] sqlParser.LiteralContext context) { TerminalNodeImpl terminalNode = (TerminalNodeImpl)context.children[0]; SqlLiteral sqlLiteral; switch (terminalNode.Symbol.Type) { case sqlParser.STRING_LITERAL: string value = CstToAstVisitor.GetStringValueFromNode(terminalNode); sqlLiteral = SqlStringLiteral.Create(value); break; case sqlParser.NUMERIC_LITERAL: Number64 number64 = CstToAstVisitor.GetNumber64ValueFromNode(terminalNode); sqlLiteral = SqlNumberLiteral.Create(number64); break; case sqlParser.K_TRUE: sqlLiteral = SqlBooleanLiteral.Create(true); break; case sqlParser.K_FALSE: sqlLiteral = SqlBooleanLiteral.Create(false); break; case sqlParser.K_NULL: sqlLiteral = SqlNullLiteral.Create(); break; case sqlParser.K_UNDEFINED: sqlLiteral = SqlUndefinedLiteral.Create(); break; default: throw new ArgumentOutOfRangeException($"Unknown symbol type: {terminalNode.Symbol.Type}"); } return(sqlLiteral); }
public override void Visit(SqlBooleanLiteral sqlBooleanLiteral) { this.writer.Write(sqlBooleanLiteral.Value ? "true" : "false"); }
public abstract TOutput Visit(SqlBooleanLiteral sqlObject, TArg input);
public override SqlObject Visit(SqlBooleanLiteral sqlBooleanLiteral) { // booleans aren't PII so I will return as is. return(sqlBooleanLiteral); }
public override CosmosElement Visit(SqlBooleanLiteral literal) => CosmosBoolean.Create(literal.Value);
public virtual void Visiting(SqlBooleanLiteral booleanLiteral) { sqlBuilder.Append(EncapsulateBoolean(FormatBoolean(booleanLiteral.BooleanValue))); }
public abstract void Visit(SqlBooleanLiteral literal);
/// <summary> /// Converts a JToken to a semantically equivalent SqlScalarExpression. /// </summary> /// <param name="token">The JToken to convert.</param> /// <returns>The semantically equivalent SqlScalarExpression.</returns> public static SqlScalarExpression Convert(JToken token) { if (token == null) { return(Undefined); } switch (token.Type) { case JTokenType.Array: { List <SqlScalarExpression> items = new List <SqlScalarExpression>(); foreach (JToken element in token) { items.Add(JTokenToSqlScalarExpression.Convert(element)); } return(SqlArrayCreateScalarExpression.Create(items.ToArray())); } case JTokenType.Boolean: { SqlBooleanLiteral literal = SqlBooleanLiteral.Create(token.ToObject <bool>()); return(SqlLiteralScalarExpression.Create(literal)); } case JTokenType.Null: { SqlNullLiteral literal = SqlNullLiteral.Singleton; return(SqlLiteralScalarExpression.Create(literal)); } case JTokenType.Integer: case JTokenType.Float: { SqlNumberLiteral literal = SqlNumberLiteral.Create(token.ToObject <double>()); return(SqlLiteralScalarExpression.Create(literal)); } case JTokenType.Object: { List <SqlObjectProperty> properties = new List <SqlObjectProperty>(); foreach (JProperty prop in (JToken)token) { SqlPropertyName name = SqlPropertyName.Create(prop.Name); JToken value = prop.Value; SqlScalarExpression expression = JTokenToSqlScalarExpression.Convert(value); SqlObjectProperty property = SqlObjectProperty.Create(name, expression); properties.Add(property); } return(SqlObjectCreateScalarExpression.Create(properties.ToArray())); } case JTokenType.String: { SqlStringLiteral literal = SqlStringLiteral.Create(token.ToObject <string>()); return(SqlLiteralScalarExpression.Create(literal)); } default: throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "Unsupported JsonType {0}", token.Type)); } }
public virtual void Visited(SqlBooleanLiteral booleanLiteral) { }
public abstract TResult Visit(SqlBooleanLiteral sqlObject);
public abstract void Visit(SqlBooleanLiteral sqlObject);
public abstract TResult Visit(SqlBooleanLiteral literal);