コード例 #1
0
 public ImmutableHanaDerivedTableNode(
     IQsiTreeNode parent,
     IQsiTableDirectivesNode directives,
     IQsiColumnsDeclarationNode columns,
     IQsiTableNode source,
     IQsiAliasNode alias,
     IQsiWhereExpressionNode @where,
     IQsiGroupingExpressionNode grouping,
     IQsiMultipleOrderExpressionNode order,
     IQsiLimitExpressionNode limit,
     QsiExpressionNode top,
     HanaResultSetOperation?operation,
     QsiExpressionFragmentNode sampling,
     HanaTableBehaviorNode behavior,
     QsiExpressionFragmentNode timeTravel,
     QsiExpressionFragmentNode hint,
     IUserDataHolder userData)
 {
     Parent     = parent;
     Directives = directives;
     Columns    = columns;
     Source     = source;
     Alias      = alias;
     Where      = @where;
     Grouping   = grouping;
     Order      = order;
     Limit      = limit;
     Top        = top;
     Operation  = operation;
     Sampling   = sampling;
     Behavior   = behavior;
     TimeTravel = timeTravel;
     Hint       = hint;
     UserData   = userData;
 }
コード例 #2
0
        protected bool IsWildcard(IQsiColumnsDeclarationNode node)
        {
            if (node.Count != 1)
            {
                return(false);
            }

            return
                (node.Columns[0] is IQsiAllColumnNode {
                Path : null
            });
コード例 #3
0
 public ImmutableInlineDerivedTableNode(
     IQsiTreeNode parent,
     IQsiAliasNode alias,
     IQsiColumnsDeclarationNode columns,
     IQsiRowValueExpressionNode[] rows,
     IUserDataHolder userData)
 {
     Parent   = parent;
     Alias    = alias;
     Columns  = columns;
     Rows     = rows;
     UserData = userData;
 }
コード例 #4
0
 public ImmutableJoinedTableNode(
     IQsiTreeNode parent,
     IQsiTableNode left,
     QsiJoinType joinType,
     IQsiTableNode right,
     IQsiColumnsDeclarationNode pivotColumns,
     IUserDataHolder userData)
 {
     Parent       = parent;
     Left         = left;
     JoinType     = joinType;
     Right        = right;
     PivotColumns = pivotColumns;
     UserData     = userData;
 }
コード例 #5
0
 public ImmutableJoinedTableNode(
     IQsiTreeNode parent,
     IQsiTableNode left,
     string joinType,
     bool isNatural,
     bool isComma,
     IQsiTableNode right,
     IQsiColumnsDeclarationNode pivotColumns,
     IUserDataHolder userData)
 {
     Parent       = parent;
     Left         = left;
     JoinType     = joinType;
     IsNatural    = isNatural;
     IsComma      = isComma;
     Right        = right;
     PivotColumns = pivotColumns;
     UserData     = userData;
 }
コード例 #6
0
 public ImmutableDerivedTableNode(
     IQsiTreeNode parent,
     IQsiTableDirectivesNode directives,
     IQsiColumnsDeclarationNode columns,
     IQsiTableNode source,
     IQsiAliasNode alias,
     IQsiWhereExpressionNode @where,
     IQsiGroupingExpressionNode grouping,
     IQsiMultipleOrderExpressionNode order,
     IQsiLimitExpressionNode limit,
     IUserDataHolder userData)
 {
     Parent     = parent;
     Directives = directives;
     Columns    = columns;
     Source     = source;
     Alias      = alias;
     Where      = @where;
     Grouping   = grouping;
     Order      = order;
     Limit      = limit;
     UserData   = userData;
 }
コード例 #7
0
        private IEnumerable <ColumnPlan> CompileColumnPlan(IAnalyzerContext context, QsiTableStructure table, IQsiColumnsDeclarationNode columns)
        {
            if (columns.Columns.All(c => c is IQsiAllColumnNode))
            {
                return(table.Columns.Select(c => new ColumnPlan(c.Name)));
            }

            var plans = new Dictionary <QsiIdentifier, ColumnPlan>(IdentifierComparer);

            foreach (var column in columns)
            {
                QsiIdentifier identifier;
                ISelector[]   selectors = null;

                switch (column)
                {
                case IQsiDeclaredColumnNode declaredColumn:
                {
                    identifier = declaredColumn.Name[^ 1];