Class: Teradata::ResultSet

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/teradata/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(status, cli) ⇒ ResultSet

Returns a new instance of ResultSet.



612
613
614
615
616
617
618
619
620
621
# File 'lib/teradata/connection.rb', line 612

def initialize(status, cli)
  @status = status
  @cli = cli
  @next = nil
  @closed = false
  @metadata_read = false
  @metadata = nil
  @valued = false
  @entries = nil
end

Instance Method Details

#closeObject



675
676
677
678
679
# File 'lib/teradata/connection.rb', line 675

def close
  check_connection
  @cli.skip_current_statement
  @closed = true
end

#closed?Boolean

Returns:

  • (Boolean)


671
672
673
# File 'lib/teradata/connection.rb', line 671

def closed?
  @closed
end

#each_record(&block) ⇒ Object Also known as: each



681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
# File 'lib/teradata/connection.rb', line 681

def each_record(&block)
  return @entries.each(&block) if @entries
  check_connection
  unless @metadata_read
    @metadata = @cli.
    unless @metadata
      @closed = true
      return
    end
    @metadata_read = true
  end
  while rec = @cli.read_record
    yield @metadata.unmarshal(rec)
  end
  @closed = true
end

#each_result_setObject



646
647
648
649
650
651
652
653
654
655
656
657
# File 'lib/teradata/connection.rb', line 646

def each_result_set
  rs = self
  while rs
    begin
      yield rs
    ensure
      rs.close unless rs.closed?
    end
    rs = rs.next
  end
  nil
end

#entriesObject

read all record and return it



701
702
703
704
705
# File 'lib/teradata/connection.rb', line 701

def entries
  return @entries if @entries
  check_connection
  map {|rec| rec }
end

#fetch_allObject

read all records and save it for later reference.



708
709
710
711
712
713
# File 'lib/teradata/connection.rb', line 708

def fetch_all
  return if @entries
  check_connection
  @entries = map {|rec| rec }
  nil
end

#inspectObject



623
624
625
# File 'lib/teradata/connection.rb', line 623

def inspect
  "\#<ResultSet #{@status.inspect} next=#{@next.inspect}>"
end

#nextObject



636
637
638
639
640
641
642
643
644
# File 'lib/teradata/connection.rb', line 636

def next
  return @next if @next
  close unless closed?
  value
  rs = @cli.read_result_set
  @next = rs
  rs.value if rs
  rs
end

#valueObject



665
666
667
668
669
# File 'lib/teradata/connection.rb', line 665

def value
  return if @valued
  @status.value
  @valued = true
end

#value_allObject



659
660
661
662
663
# File 'lib/teradata/connection.rb', line 659

def value_all
  each_result_set do |rs|
    ;
  end
end