public override void ExitWindow_function(MiniSqlParserParser.Window_functionContext context) { var comments = this.GetComments(context.function_name().qualified_schema_name()); comments.AddRange(this.GetComments(context.function_name())); comments.AddRange(this.GetComments(context)); Identifier serverName = null; Identifier databaseName = null; Identifier schemaName = null; if (context.function_name().qualified_schema_name() != null) { serverName = this.GetIdentifier(context.function_name().qualified_schema_name().s); databaseName = this.GetIdentifier(context.function_name().qualified_schema_name().d); schemaName = this.GetIdentifier(context.function_name().qualified_schema_name().n); } var name = this.GetIdentifier(context.function_name().identifier()); QuantifierType quantifier; if (context.K_DISTINCT() != null) { quantifier = QuantifierType.Distinct; } else if (context.K_ALL() != null) { quantifier = QuantifierType.All; } else { quantifier = QuantifierType.None; } var hasWildcard = context.STAR() != null; var orderBy = (OrderBy)_stack.Pop(); PartitionBy partitionBy = null; if (context.partitionBy_clause() != null) { partitionBy = (PartitionBy)_stack.Pop(); } Exprs arguments = null; if (context.exprs() != null) { arguments = (Exprs)_stack.Pop(); } _stack.Push(new WindowFuncExpr(serverName , databaseName , schemaName , name , quantifier , hasWildcard , arguments , partitionBy , orderBy , comments)); }
public override void VisitAfter(WindowFuncExpr expr) { OrderBy orderBy = (OrderBy)_stack.Pop(); PartitionBy partitionBy = null; if (expr.PartitionBy != null) { partitionBy = (PartitionBy)_stack.Pop(); } Exprs arg = null; if (expr.Arguments != null) { arg = (Exprs)_stack.Pop(); } if (object.ReferenceEquals(expr.Arguments, arg) && object.ReferenceEquals(expr.PartitionBy, partitionBy) && object.ReferenceEquals(expr.OrderBy, orderBy)) { _stack.Push(expr); return; } var node = new WindowFuncExpr(expr.ServerName , expr.DataBaseName , expr.SchemaName , expr.Name , expr.Quantifier , expr.HasWildcard , arg , partitionBy , orderBy , expr.Comments.Clone()); _stack.Push(node); }
virtual public void VisitAfter(PartitionBy partitionBy) { }
virtual public void VisitBefore(PartitionBy partitionBy) { }
public override void VisitAfter(PartitionBy partitionBy) { }
public override void VisitAfter(PartitionBy partitionBy) { --_clauseLevel; }
public override void VisitBefore(PartitionBy partitionBy) { ++_clauseLevel; }
public void VisitAfter(PartitionBy partitionBy) { _visitor.VisitAfter(partitionBy); }
public void VisitBefore(PartitionBy partitionBy) { _visitor.VisitBefore(partitionBy); }