Class: Mysql::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/rspider/mysql.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mysql, fields, field_count, data = nil) ⇒ Result

Returns a new instance of Result.



504
505
506
507
508
509
510
511
512
513
# File 'lib/rspider/mysql.rb', line 504

def initialize(mysql, fields, field_count, data=nil)
  @handle = mysql
  @fields = fields
  @field_count = field_count
  @data = data
  @current_field = 0
  @current_row = 0
  @eof = false
  @row_count = 0
end

Instance Attribute Details

#eofObject

Returns the value of attribute eof.



514
515
516
# File 'lib/rspider/mysql.rb', line 514

def eof
  @eof
end

Instance Method Details

#data_seek(n) ⇒ Object



516
517
518
# File 'lib/rspider/mysql.rb', line 516

def data_seek(n)
  @current_row = n
end

#eachObject



601
602
603
604
605
# File 'lib/rspider/mysql.rb', line 601

def each()
  while row = fetch_row do
	yield row
  end
end

#each_hash(with_table = nil) ⇒ Object



607
608
609
610
611
# File 'lib/rspider/mysql.rb', line 607

def each_hash(with_table=nil)
  while hash = fetch_hash(with_table) do
	yield hash
  end
end

#fetch_fieldObject



520
521
522
523
524
525
# File 'lib/rspider/mysql.rb', line 520

def fetch_field()
  return if @current_field >= @field_count
  f = @fields[@current_field]
  @current_field += 1
  f
end

#fetch_field_direct(n) ⇒ Object



531
532
533
# File 'lib/rspider/mysql.rb', line 531

def fetch_field_direct(n)
  @fields[n]
end

#fetch_fieldsObject



527
528
529
# File 'lib/rspider/mysql.rb', line 527

def fetch_fields()
  @fields
end

#fetch_hash(with_table = nil) ⇒ Object



560
561
562
563
564
565
566
567
568
569
# File 'lib/rspider/mysql.rb', line 560

def fetch_hash(with_table=nil)
  row = fetch_row
  return if row == nil
  hash = {}
  @fields.each_index do |i|
	f = with_table ? @fields[i].table+"."+@fields[i].name : @fields[i].name
	hash[f] = row[i]
  end
  hash
end

#fetch_lengthsObject



535
536
537
# File 'lib/rspider/mysql.rb', line 535

def fetch_lengths()
  @data ? @data[@current_row].map{|i| i ? i.length : 0} : @lengths
end

#fetch_rowObject



539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
# File 'lib/rspider/mysql.rb', line 539

def fetch_row()
  if @data then
	if @current_row >= @data.length then
	  @handle.status = :STATUS_READY
	  return
	end
	ret = @data[@current_row]
	@current_row += 1
  else
	return if @eof
	ret = @handle.read_one_row @field_count
	if ret == nil then
	  @eof = true
	  return
	end
	@lengths = ret.map{|i| i ? i.length : 0}
	@row_count += 1
  end
  ret
end

#field_seek(n) ⇒ Object



571
572
573
# File 'lib/rspider/mysql.rb', line 571

def field_seek(n)
  @current_field = n
end

#field_tellObject



575
576
577
# File 'lib/rspider/mysql.rb', line 575

def field_tell()
  @current_field
end

#freeObject



579
580
581
582
583
# File 'lib/rspider/mysql.rb', line 579

def free()
  @handle.skip_result
  @handle = @fields = @data = nil
  GC::start
end

#inspectObject



613
614
615
# File 'lib/rspider/mysql.rb', line 613

def inspect()
  "#<#{self.class}>"
end

#num_fieldsObject



585
586
587
# File 'lib/rspider/mysql.rb', line 585

def num_fields()
  @field_count
end

#num_rowsObject



589
590
591
# File 'lib/rspider/mysql.rb', line 589

def num_rows()
  @data ? @data.length : @row_count
end

#row_seek(n) ⇒ Object



593
594
595
# File 'lib/rspider/mysql.rb', line 593

def row_seek(n)
  @current_row = n
end

#row_tellObject



597
598
599
# File 'lib/rspider/mysql.rb', line 597

def row_tell()
  @current_row
end