public override object VisitResult_column([NotNull] SqlParser.Result_columnContext context) { ColumnExpression column = null; if (context.GetText().EndsWith("*")) { var table = context.table_name() == null ? "" : context.table_name().GetText(); var tableMap = queryTableStack.Peek(); GetTableNameAlias(tableMap, table, out var tableName, out var tableAlias); column = new ColumnExpression() { ColumnName = "*", TableName = tableName, TableAlias = tableAlias, }; } else { // in case of resut column it should only set alias, but not use alias. var expr = (IExpression)VisitExpr(context.expr(), false); if (expr is ColumnExpression) { column = expr as ColumnExpression; } else { column = new ColumnExpression { IsExpression = true, ColumnName = context.expr().GetText(), SubExpressions = new List <IExpression> { expr } }; } if (context.column_alias() != null) { column.Alias = EscapeTableOrColumnName(context.column_alias().GetText()); var columnMap = queryColumnStack.Peek(); if (columnMap != null) { columnMap[column.Alias] = column; } } } return(column); }
/// <summary> /// Visit a parse tree produced by <see cref="SqlParser.result_column"/>. /// <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 VisitResult_column([NotNull] SqlParser.Result_columnContext context) { return(VisitChildren(context)); }