alf-tool/alf-sql

View on GitHub
lib/alf/sql/nodes/set_operator.rb

Summary

Maintainability
A
25 mins
Test Coverage
module Alf
  module Sql
    module SetOperator
      include Expr

      def left
        self[2]
      end

      def right
        self[3]
      end

      def set_quantifier
        self[1]
      end

      def with_exp?
        false
      end

      def set_operator?
        true
      end

      def is_table_dee?
        false
      end

      def distinct?
        set_quantifier.distinct?
      end

      def all?
        set_quantifier.all?
      end

      def should_be_reused?
        true
      end

      def order_by_clause
        nil
      end

      def to_attr_list
        self.last.to_attr_list
      end

      def to_sql(buffer = "", parenthesize = !buffer.empty?)
        if parenthesize
          sql_parenthesized(buffer){|b| to_sql(b, false) }
        else
          left.to_sql(buffer, true)
          buffer << SPACE << keyword
          unless distinct?
            buffer << SPACE
            set_quantifier.to_sql(buffer)
          end
          buffer << SPACE
          right.to_sql(buffer, true)
          buffer
        end
      end

    end # module SetOperator
  end # module Sql
end # module Alf