module OracleSqlParser::Grammar::Select::Union
Public Instance Methods
_nt_subqueries_with_union()
click to toggle source
# File lib/oracle-sql-parser/grammar/select/union.rb, line 45 def _nt_subqueries_with_union start_index = index if node_cache[:subqueries_with_union].has_key?(index) cached = node_cache[:subqueries_with_union][index] if cached node_cache[:subqueries_with_union][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_query_block s0 << r1 if r1 r3 = _nt_space if r3 r2 = r3 else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 if r2 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_union_or_intersect_or_minus s5 << r6 if r6 r8 = _nt_space if r8 r7 = r8 else r7 = instantiate_node(SyntaxNode,input, index...index) end s5 << r7 if r7 r9 = _nt_subquery s5 << r9 end end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(SubqueriesWithUnion0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end if s4.empty? @index = i4 r4 = nil else r4 = instantiate_node(SyntaxNode,input, i4...index, s4) end s0 << r4 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(SubqueriesWithUnion1) r0.extend(SubqueriesWithUnion2) else @index = i0 r0 = nil end node_cache[:subqueries_with_union][start_index] = r0 r0 end
_nt_union_all()
click to toggle source
# File lib/oracle-sql-parser/grammar/select/union.rb, line 252 def _nt_union_all start_index = index if node_cache[:union_all].has_key?(index) cached = node_cache[:union_all][index] if cached node_cache[:union_all][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_union_keyword s0 << r1 if r1 i3, s3 = index, [] r4 = _nt_space s3 << r4 if r4 r5 = _nt_all_keyword s3 << r5 end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(UnionAll0) else @index = i3 r3 = nil end if r3 r2 = r3 else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(UnionAll1) r0.extend(UnionAll2) else @index = i0 r0 = nil end node_cache[:union_all][start_index] = r0 r0 end
_nt_union_or_intersect_or_minus()
click to toggle source
# File lib/oracle-sql-parser/grammar/select/union.rb, line 152 def _nt_union_or_intersect_or_minus start_index = index if node_cache[:union_or_intersect_or_minus].has_key?(index) cached = node_cache[:union_or_intersect_or_minus][index] if cached node_cache[:union_or_intersect_or_minus][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] r2 = _nt_union_all s1 << r2 if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(UnionOrIntersectOrMinus0) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(UnionOrIntersectOrMinus3) r0.extend(UnionOrIntersectOrMinus3) else i3, s3 = index, [] r4 = _nt_intersect_keyword s3 << r4 if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(UnionOrIntersectOrMinus1) else @index = i3 r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 r0.extend(UnionOrIntersectOrMinus3) r0.extend(UnionOrIntersectOrMinus3) else i5, s5 = index, [] r6 = _nt_minus_keyword s5 << r6 if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(UnionOrIntersectOrMinus2) else @index = i5 r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 r0.extend(UnionOrIntersectOrMinus3) r0.extend(UnionOrIntersectOrMinus3) else @index = i0 r0 = nil end end end node_cache[:union_or_intersect_or_minus][start_index] = r0 r0 end
root()
click to toggle source
# File lib/oracle-sql-parser/grammar/select/union.rb, line 8 def root @root ||= :subqueries_with_union end