Class: DataObject::Postgres::Reader

Inherits:
Reader
  • Object
show all
Defined in:
lib/do_postgres.rb

Instance Method Summary collapse

Constructor Details

#initialize(db, reader) ⇒ Reader

Returns a new instance of Reader.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/do_postgres.rb', line 41

def initialize(db, reader)
  @reader = reader
  case Postgres_c.PQresultStatus(reader)
  when Postgres_c::PGRES_COMMAND_OK
    @records_affected = Postgres_c.PQcmdTuples(reader).to_i
    close
  when Postgres_c::PGRES_TUPLES_OK
    @fields, @field_types = [], []
    @field_count = Postgres_c.PQnfields(@reader)
    i = 0
    while(i < @field_count)
      @field_types.push(Postgres_c.PQftype(@reader, i))
      @fields.push(Postgres_c.PQfname(@reader, i))
      i += 1
    end
    @rows = Postgres_c.PQntuples(@reader)
    @has_rows = @rows > 0
    @cursor = 0
    @state = STATE_OPEN
  end
end

Instance Method Details

#data_type_name(col) ⇒ Object



67
68
69
# File 'lib/do_postgres.rb', line 67

def data_type_name(col)
  
end

#eachObject



92
93
94
95
96
97
98
99
# File 'lib/do_postgres.rb', line 92

def each
  return unless has_rows?
  
  while(true) do
    yield
    break unless self.next
  end
end

#get_index(name) ⇒ Object



76
77
78
79
# File 'lib/do_postgres.rb', line 76

def get_index(name)
  super
  @fields.index(name)
end

#item(idx) ⇒ Object



86
87
88
89
90
# File 'lib/do_postgres.rb', line 86

def item(idx)
  super
  val = Postgres_c.PQgetvalue(@reader, @cursor, idx)
  typecast(val, @field_types[idx])
end

#name(col) ⇒ Object



71
72
73
74
# File 'lib/do_postgres.rb', line 71

def name(col)
  super
  Postgres_c.PQfname(@reader, col)
end

#nextObject



101
102
103
104
105
106
107
108
109
110
# File 'lib/do_postgres.rb', line 101

def next
  super   
  if @cursor >= @rows - 1
    @cursor = nil
    close
    return nil
  end
  @cursor += 1
  true
end

#null?(idx) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
84
# File 'lib/do_postgres.rb', line 81

def null?(idx)
  super
  Postgres_c.PQgetisnull(@reader, @cursor, idx) != 0
end

#real_closeObject



63
64
65
# File 'lib/do_postgres.rb', line 63

def real_close
  Postgres_c.PQclear(@reader)
end