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);
        }
Exemplo n.º 3
0
            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);
        }
Exemplo n.º 5
0
            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);
            }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        /// <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");
 }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 12
0
 public override CosmosElement Visit(SqlBooleanLiteral literal) => CosmosBoolean.Create(literal.Value);
Exemplo n.º 13
0
 public virtual void Visiting(SqlBooleanLiteral booleanLiteral)
 {
     sqlBuilder.Append(EncapsulateBoolean(FormatBoolean(booleanLiteral.BooleanValue)));
 }
Exemplo n.º 14
0
 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));
            }
        }
Exemplo n.º 16
0
 public virtual void Visited(SqlBooleanLiteral booleanLiteral)
 {
 }
Exemplo n.º 17
0
 public abstract TResult Visit(SqlBooleanLiteral sqlObject);
Exemplo n.º 18
0
 public abstract void Visit(SqlBooleanLiteral sqlObject);
Exemplo n.º 19
0
 public abstract TResult Visit(SqlBooleanLiteral literal);