示例#1
0
 protected virtual QsiIdentifier ResolveDerivedColumnName(TableCompileContext context, IQsiDerivedTableNode table, IQsiDerivedColumnNode column)
 {
     return(column.Alias?.Name ?? column.InferredName);
 }
示例#2
0
        protected override QsiIdentifier ResolveDerivedColumnName(TableCompileContext context, IQsiDerivedTableNode table, IQsiDerivedColumnNode column)
        {
            if (column.IsExpression && column.Alias is null)
            {
                var expr        = column.Expression;
                var parensCount = 0;

                while (expr is IQsiMultipleExpressionNode multipleExpr && multipleExpr.Elements.Length == 1)
                {
                    expr = multipleExpr.Elements[0];
                    parensCount++;
                }

                bool withParens = true;
                var  parent     = table.Parent;

                while (parent is not null)
                {
                    if (parent is IQsiDerivedTableNode)
                    {
                        withParens = false;
                        break;
                    }

                    parent = parent.Parent;
                }

                if (expr is IQsiColumnExpressionNode {
                    Column : IQsiColumnReferenceNode columnReferenceNode
                })