示例#1
0
        internal virtual void Is(GremlinToSqlContext currentContext, Predicate predicate)
        {
            WScalarExpression firstExpr  = GetDefaultProjection().ToScalarExpression();
            WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value);

            currentContext.AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate));
        }
示例#2
0
        internal void HasId(GremlinVariable lastVariable, Predicate predicate)
        {
            WScalarExpression firstExpr  = lastVariable.GetVariableProperty(lastVariable.GetPrimaryKey()).ToScalarExpression();
            WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value);

            AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, BooleanComparisonType.Equals));
        }
示例#3
0
        internal void Has(GremlinVariable lastVariable, string propertyKey, Predicate predicate)
        {
            WScalarExpression firstExpr  = lastVariable.GetVariableProperty(propertyKey).ToScalarExpression();
            WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value);

            AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate));
        }
示例#4
0
        internal virtual void Is(GremlinToSqlContext currentContext, Predicate predicate)
        {
            WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value);
            var firstExpr   = DefaultVariableProperty().ToScalarExpression();
            var booleanExpr = SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate);

            currentContext.AddPredicate(booleanExpr);
        }
示例#5
0
        internal void HasId(GremlinVariable lastVariable, List <object> values)
        {
            List <WBooleanExpression> booleanExprList = new List <WBooleanExpression>();

            foreach (var value in values)
            {
                WScalarExpression firstExpr  = lastVariable.GetVariableProperty(lastVariable.GetPrimaryKey()).ToScalarExpression();
                WScalarExpression secondExpr = SqlUtil.GetValueExpr(value);
                booleanExprList.Add(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, BooleanComparisonType.Equals));
            }
            WBooleanExpression concatSql = SqlUtil.ConcatBooleanExprWithOr(booleanExprList);

            AddPredicate(SqlUtil.GetBooleanParenthesisExpr(concatSql));
        }
示例#6
0
        internal virtual void Where(GremlinToSqlContext currentContext, Predicate predicate)
        {
            var compareVar = currentContext.Select(predicate.Value as string);

            if (compareVar.Count > 1)
            {
                throw new Exception();
            }

            var firstExpr   = DefaultProjection().ToScalarExpression();
            var secondExpr  = compareVar.First().DefaultProjection().ToScalarExpression();
            var booleanExpr = SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate);

            currentContext.AddPredicate(booleanExpr);
        }
示例#7
0
 private WBooleanExpression CreateBooleanExpression(GremlinVariableProperty variableProperty, object valuesOrPredicate)
 {
     if (valuesOrPredicate is string || valuesOrPredicate is int || valuesOrPredicate is bool)
     {
         WScalarExpression firstExpr  = variableProperty.ToScalarExpression();
         WScalarExpression secondExpr = SqlUtil.GetValueExpr(valuesOrPredicate);
         return(SqlUtil.GetEqualBooleanComparisonExpr(firstExpr, secondExpr));
     }
     if (valuesOrPredicate is Predicate)
     {
         WScalarExpression firstExpr  = variableProperty.ToScalarExpression();
         WScalarExpression secondExpr = SqlUtil.GetValueExpr((valuesOrPredicate as Predicate).Value);
         return(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, valuesOrPredicate as Predicate));
     }
     throw new ArgumentException();
 }
示例#8
0
        internal WBooleanExpression GetWherePredicate(GremlinToSqlContext currentContext, GremlinVariable firstVar, Predicate predicate, TraversalRing traversalRing)
        {
            AndPredicate andPredicate = predicate as AndPredicate;

            if (andPredicate != null)
            {
                List <WBooleanExpression> booleanList = new List <WBooleanExpression>();
                foreach (var p in andPredicate.PredicateList)
                {
                    booleanList.Add(GetWherePredicate(currentContext, firstVar, p, traversalRing));
                }
                return(SqlUtil.ConcatBooleanExprWithAnd(booleanList));
            }

            OrPredicate orPredicate = predicate as OrPredicate;

            if (orPredicate != null)
            {
                List <WBooleanExpression> booleanList = new List <WBooleanExpression>();
                foreach (var p in orPredicate.PredicateList)
                {
                    booleanList.Add(GetWherePredicate(currentContext, firstVar, p, traversalRing));
                }
                return(SqlUtil.ConcatBooleanExprWithOr(booleanList));
            }

            var selectKeys = new List <string>()
            {
                predicate.Value as string
            };
            var selectTraversal = new List <GraphTraversal2>()
            {
                traversalRing.Next()
            };
            var selectVar  = GetSelectVar(currentContext, GremlinKeyword.Pop.Last, selectKeys, selectTraversal);
            var firstExpr  = firstVar.GetDefaultProjection().ToScalarExpression();
            var secondExpr = selectVar.GetDefaultProjection().ToScalarExpression();

            return(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate));
        }