protected virtual QsiIdentifier ResolveDerivedColumnName(TableCompileContext context, IQsiDerivedTableNode table, IQsiDerivedColumnNode column) { return(column.Alias?.Name ?? column.InferredName); }
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 })