Esempio n. 1
0
        private SqlOrderByEntryNode ParseOrderTerm(ITokenizer t)
        {
            // ( <QualifiedIdentifier> | <Number> ) ("ASC" | "DESC")?
            var identifier = ParseQualifiedIdentifier(t);

            if (identifier == null)
            {
                if (t.Peek().IsType(SqlTokenType.Number))
                {
                    var number = t.GetNext();
                    identifier = new SqlNumberNode(number);
                }
            }

            if (identifier == null)
            {
                throw ParsingException.CouldNotParseRule(nameof(ParseOrderTerm), t.Peek());
            }
            var entry = new SqlOrderByEntryNode
            {
                Location = identifier.Location,
                Source   = identifier
            };
            var next = t.Peek();

            if (next.IsKeyword("ASC") || next.IsKeyword("DESC"))
            {
                t.GetNext();
                entry.Direction = next.Value;
            }

            return(entry);
        }
Esempio n. 2
0
        public ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n)
        {
            Visit(n.Source);
            if (!string.IsNullOrEmpty(n.Direction))
            {
                Append(" ", n.Direction);
            }

            return(n);
        }
Esempio n. 3
0
        public virtual ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n)
        {
            var source = Visit(n.Source);

            return(n.Update(source, n.Direction));
        }
 public override ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n)
 {
     return(base.VisitOrderByEntry(n));
 }