Пример #1
0
        public override object VisitTable_or_subquery([NotNull] SqlParser.Table_or_subqueryContext context)
        {
            if (context.table_name() != null)
            {
                if (context.table_alias() != null && IsKeyWord(context.table_alias().GetText()))
                {
                    throw new SQLParseException($"Incorrect syntax near '{context.table_alias().GetText()}'");
                }

                var table = new TableName()
                {
                    Name  = EscapeTableOrColumnName(context.table_name().GetText()),
                    Alias = EscapeTableOrColumnName(context.table_alias() == null ? "" : context.table_alias().GetText())
                };

                var tableMap = queryTableStack.Peek();
                if (!string.IsNullOrEmpty(table.Alias) && tableMap != null)
                {
                    tableMap[table.Alias] = table.Name;
                }

                return(table);
            }

            return(null);
        }
Пример #2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="SqlParser.table_or_subquery"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitTable_or_subquery([NotNull] SqlParser.Table_or_subqueryContext context)
 {
     return(VisitChildren(context));
 }