Sha256: 5da0f559a84f11ef8ecbc620c8a120222204a95fd79bacb84783a0c7b1d3b3d3

Contents?: true

Size: 790 Bytes

Versions: 2

Compression:

Stored size: 790 Bytes

Contents

require 'arc-furnace/abstract_join'

module ArcFurnace
  # Perform a join between a hash and a source, only producing rows
  # from the source that match a row from the hash. The resulting row
  # will merge the source "into" the hash, that is, values from the
  # source that share the same keys will overwrite values in the hash
  # value for the corresponding source row.
  #
  # Example:
  # Source row { id: "foo", key1: "boo", key2: "bar" }
  # Matching hash row { id: "foo", key1: "bar", key3: "baz" }
  # Result row: { id: "foo", key1: "boo", key2: "bar", key3: "baz" }
  class InnerJoin < AbstractJoin

    def advance
      loop do
        @value = source.row
        break if value.nil?
        if merge_source_row(value)
          break
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
arc-furnace-0.1.3 lib/arc-furnace/inner_join.rb
arc-furnace-0.1.0 lib/arc-furnace/inner_join.rb