コード例 #1
0
ファイル: GremlinVariable.cs プロジェクト: georgeycliu/k-core
        internal virtual void SelectColumn(GremlinToSqlContext currentContext, GremlinKeyword.Column column)
        {
            GremlinSelectColumnVariable newVariable = new GremlinSelectColumnVariable(this, column);

            currentContext.VariableList.Add(newVariable);
            currentContext.TableReferences.Add(newVariable);
            currentContext.SetPivotVariable(newVariable);
        }
コード例 #2
0
        public GremlinSelectColumnVariable(GremlinVariable inputVariable, GremlinKeyword.Column column) : base(GremlinVariableType.Unknown)
        {
            GremlinVariableType inputVariableType = inputVariable.GetVariableType();

            if (!(GremlinVariableType.NULL <= inputVariableType && inputVariableType <= GremlinVariableType.Map ||
                  inputVariableType == GremlinVariableType.Path || inputVariableType == GremlinVariableType.Tree))
            {
                throw new SyntaxErrorException("The inputVariable of select() can not be " + inputVariableType);
            }

            this.InputVariable = inputVariable;
            this.Column        = column;
        }
コード例 #3
0
 public override void ModulateBy(GremlinKeyword.Column column)
 {
     if (GroupBy == null)
     {
         GroupBy = GraphTraversal.__().Select(column);
     }
     else if (ProjectBy == null)
     {
         ProjectBy = GraphTraversal.__().Select(column);
     }
     else
     {
         throw new QueryCompilationException("The key and value traversals for group()-step have already been set");
     }
 }
コード例 #4
0
        public override void ModulateBy(GremlinKeyword.Column column, GremlinKeyword.Order order)
        {
            switch (order)
            {
            case GremlinKeyword.Order.Incr:
                ByModulatingMap.Add(new Tuple <object, IComparer>(column, new IncrOrder()));
                break;

            case GremlinKeyword.Order.Decr:
                ByModulatingMap.Add(new Tuple <object, IComparer>(column, new DecrOrder()));
                break;

            case GremlinKeyword.Order.Shuffle:
                ByModulatingMap.Add(new Tuple <object, IComparer>(column, new ShuffleOrder()));
                break;
            }
        }
コード例 #5
0
        public override WTableReference ToTableReference()
        {
            List <WScalarExpression> parameters = new List <WScalarExpression>();

            var tableRef = Scope == GremlinKeyword.Scope.global
              ? SqlUtil.GetFunctionTableReference(GremlinKeyword.func.OrderGlobal, parameters, GetVariableName())
              : SqlUtil.GetFunctionTableReference(GremlinKeyword.func.OrderLocal, parameters, GetVariableName());

            var wOrderTableReference = tableRef as WOrderTableReference;

            if (wOrderTableReference != null)
            {
                wOrderTableReference.OrderParameters = new List <Tuple <WScalarExpression, IComparer> >();
            }

            foreach (var pair in ByModulatingMap)
            {
                WScalarExpression scalrExpr;
                if (pair.Item1 is GremlinToSqlContext)
                {
                    scalrExpr = SqlUtil.GetScalarSubquery(((GremlinToSqlContext)pair.Item1).ToSelectQueryBlock());
                }
                else if (pair.Item1 is GremlinKeyword.Column)
                {
                    GremlinKeyword.Column column = (GremlinKeyword.Column)pair.Item1;
                    scalrExpr = column == GremlinKeyword.Column.keys
                        ? SqlUtil.GetValueExpr("keys")
                        : SqlUtil.GetValueExpr("values");
                }
                else if (pair.Item1 == "")
                {
                    scalrExpr = SqlUtil.GetValueExpr(null);
                }
                else
                {
                    throw new ArgumentException();
                }
                var orderTableReference = tableRef as WOrderTableReference;
                orderTableReference?.OrderParameters.Add(new Tuple <WScalarExpression, IComparer>(scalrExpr, pair.Item2));
                orderTableReference?.Parameters.Add(scalrExpr);
            }

            return(SqlUtil.GetCrossApplyTableReference(tableRef));
        }
コード例 #6
0
 public virtual void ModulateBy(GremlinKeyword.Column column, IComparer comparer)
 {
     ModulateBy(GraphTraversal2.__().Select(column), comparer);
 }
コード例 #7
0
 public virtual void ModulateBy(GremlinKeyword.Column column, GremlinKeyword.Order order)
 {
     ModulateBy(GraphTraversal2.__().Select(column), order);
 }
コード例 #8
0
 public virtual void ModulateBy(GremlinKeyword.Column column, GremlinKeyword.Order order)
 {
     throw new NotImplementedException();
 }
コード例 #9
0
ファイル: GraphTraversal2.cs プロジェクト: georgeycliu/k-core
 public GraphTraversal2 By(GremlinKeyword.Column column, IComparer comparer)
 {
     GetEndOp().ModulateBy(column, comparer);
     return(this);
 }
コード例 #10
0
ファイル: GraphTraversal2.cs プロジェクト: georgeycliu/k-core
 public GraphTraversal2 By(GremlinKeyword.Column column, GremlinKeyword.Order order)
 {
     GetEndOp().ModulateBy(column, order);
     return(this);
 }
コード例 #11
0
ファイル: GraphTraversal2.cs プロジェクト: georgeycliu/k-core
 public GraphTraversal2 Select(GremlinKeyword.Column column)
 {
     this.AddOperator(new GremlinSelectColumnOp(column));
     return(this);
 }
コード例 #12
0
 public virtual void ModulateBy(GremlinKeyword.Column column)
 {
     ModulateBy(GraphTraversal.__().Select(column));
 }
コード例 #13
0
 public GremlinSelectColumnOp(GremlinKeyword.Column column)
 {
     Column = column;
 }
コード例 #14
0
 public GremlinSelectColumnVariable(GremlinVariable inputVariable, GremlinKeyword.Column column) : base(GremlinVariableType.Table)
 {
     InputVariable = inputVariable;
     Column        = column;
 }
コード例 #15
0
 public override void ModulateBy(GremlinKeyword.Column column, IComparer comparer)
 {
     ByModulatingMap.Add(new Tuple <object, IComparer>(column, comparer));
 }
コード例 #16
0
 public override void ModulateBy(GremlinKeyword.Column column)
 {
     ByModulatingMap.Add(new Tuple <object, IComparer>(column, new IncrOrder()));
 }