Class: Alf::Algebra::Join

Inherits:
Object
  • Object
show all
Includes:
Binary, Operator, Relational
Defined in:
lib/alf/algebra/operator/join.rb

Instance Attribute Summary

Attributes included from Operator

#operands

Instance Method Summary collapse

Methods included from Binary

#common_attributes, #common_heading, included, #left, #right, #with_left, #with_right

Methods included from Relational

included

Methods included from Support::Registry

#each, #listen, #listeners, #register, #registered

Methods included from Operator

#==, #dup, #hash, included, #initialize, #signature, #to_cog, #to_lispy, #to_relvar, #to_s, #type_check, #with_operands

Methods included from TypeCheck

#joinable_headings!, #no_name_clash!, #same_heading!, #type_check_error!, #valid_ordering!

Methods included from Operand

#attr_list, coerce, #resulting_type, #to_ascii_tree, #to_cog, #to_relation, #type_check

Instance Method Details

#headingObject


11
12
13
# File 'lib/alf/algebra/operator/join.rb', line 11

def heading
  @heading ||= left.heading + right.heading
end

#keysObject


15
16
17
18
19
20
21
22
23
24
25
# File 'lib/alf/algebra/operator/join.rb', line 15

def keys
  @keys ||= begin
    keys = []
    left.keys.each do |k1|
      right.keys.each do |k2|
        keys << (k1 | k2)
      end
    end
    Keys.new keys.uniq
  end
end