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); }
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; }
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"); } }
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; } }
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)); }
public virtual void ModulateBy(GremlinKeyword.Column column, IComparer comparer) { ModulateBy(GraphTraversal2.__().Select(column), comparer); }
public virtual void ModulateBy(GremlinKeyword.Column column, GremlinKeyword.Order order) { ModulateBy(GraphTraversal2.__().Select(column), order); }
public virtual void ModulateBy(GremlinKeyword.Column column, GremlinKeyword.Order order) { throw new NotImplementedException(); }
public GraphTraversal2 By(GremlinKeyword.Column column, IComparer comparer) { GetEndOp().ModulateBy(column, comparer); return(this); }
public GraphTraversal2 By(GremlinKeyword.Column column, GremlinKeyword.Order order) { GetEndOp().ModulateBy(column, order); return(this); }
public GraphTraversal2 Select(GremlinKeyword.Column column) { this.AddOperator(new GremlinSelectColumnOp(column)); return(this); }
public virtual void ModulateBy(GremlinKeyword.Column column) { ModulateBy(GraphTraversal.__().Select(column)); }
public GremlinSelectColumnOp(GremlinKeyword.Column column) { Column = column; }
public GremlinSelectColumnVariable(GremlinVariable inputVariable, GremlinKeyword.Column column) : base(GremlinVariableType.Table) { InputVariable = inputVariable; Column = column; }
public override void ModulateBy(GremlinKeyword.Column column, IComparer comparer) { ByModulatingMap.Add(new Tuple <object, IComparer>(column, comparer)); }
public override void ModulateBy(GremlinKeyword.Column column) { ByModulatingMap.Add(new Tuple <object, IComparer>(column, new IncrOrder())); }