module OracleSqlParser::Grammar::Select
grammar Group # group rule group_by_clause group_keyword space by_keyword space target:group_column space? t:(',' space? more_target:group_column space?)* h:(having_keyword space condition:condition)? { def ast OracleSqlParser::Ast::GroupByClause[ :targets => OracleSqlParser::Ast::Array[ target.ast, *more_targets.map(&:ast) ], :having => h.try(:condition).ast ] end def more_targets t.elements.map{|e| e.more_target} end } end rule group_column ( expr / rollup_cube_clause / grouping_sets_clause ) { def ast super end } end rule rollup_cube_clause func_name:(rollup_keyword / cube_keyword) space? grouping_expression_list { def ast OracleSqlParser::Ast::RollupCubeClause[ :func_name => func_name.ast, :args => grouping_expression_list.ast ] end } end rule grouping_sets_clause 'grouping_sets_clause' { # not implemented def ast 'grouping_sets_clause' end } end rule grouping_expression_list expression_list { def ast super end } end end
end