Class: Sequel::JDBC::TypeConvertor

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel/adapters/jdbc.rb,
lib/sequel/adapters/jdbc/db2.rb,
lib/sequel/adapters/jdbc/oracle.rb,
lib/sequel/adapters/jdbc/postgresql.rb,
lib/sequel/adapters/jdbc/sqlanywhere.rb

Constant Summary collapse

INSTANCE =
new
MAP =
Hash.new(o.method(:Object))
BASIC_MAP =
MAP.dup
JAVA_BIG_DECIMAL_CONSTRUCTOR =
java.math.BigDecimal.java_class.constructor(Java::long).method(:new_instance)

Instance Method Summary collapse

Instance Method Details

#DB2Clob(r, i) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/sequel/adapters/jdbc/db2.rb', line 16

def DB2Clob(r, i)
  if v = r.getClob(i)
    v = v.getSubString(1, v.length)
    v = Sequel::SQL::Blob.new(v) if ::Sequel::DB2::use_clob_as_blob
    v
  end
end

#OracleDecimal(r, i) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/sequel/adapters/jdbc/oracle.rb', line 18

def OracleDecimal(r, i)
  if v = r.getBigDecimal(i)
    i = v.long_value
    if v == JAVA_BIG_DECIMAL_CONSTRUCTOR.call(i)
      i
    else
      BigDecimal.new(v.to_string)
    end
  end
end

#RubyBigDecimal(r, i) ⇒ Object



82
83
84
85
86
# File 'lib/sequel/adapters/jdbc.rb', line 82

def RubyBigDecimal(r, i)
  if v = r.getBigDecimal(i)
    BigDecimal.new(v.to_string)
  end
end

#RubyBlob(r, i) ⇒ Object



87
88
89
90
91
# File 'lib/sequel/adapters/jdbc.rb', line 87

def RubyBlob(r, i)
  if v = r.getBytes(i)
    Sequel::SQL::Blob.new(String.from_java_bytes(v))
  end
end

#RubyClob(r, i) ⇒ Object



92
93
94
95
96
# File 'lib/sequel/adapters/jdbc.rb', line 92

def RubyClob(r, i)
  if v = r.getClob(i)
    v.getSubString(1, v.length)
  end
end

#RubyDate(r, i) ⇒ Object



72
73
74
75
76
# File 'lib/sequel/adapters/jdbc.rb', line 72

def RubyDate(r, i)
  if v = r.getDate(i)
    Date.civil(v.getYear + 1900, v.getMonth + 1, v.getDate)
  end
end

#RubyPGArray(r, i) ⇒ Object

Return PostgreSQL array types as ruby Arrays instead of JDBC PostgreSQL driver-specific array type. Only used if the database does not have a conversion proc for the type.



20
21
22
23
24
# File 'lib/sequel/adapters/jdbc/postgresql.rb', line 20

def RubyPGArray(r, i)
  if v = r.getArray(i)
    v.array.to_ary
  end
end

#RubyPGHstore(r, i) ⇒ Object

Return PostgreSQL hstore types as ruby Hashes instead of Java HashMaps. Only used if the database does not have a conversion proc for the type.



29
30
31
32
33
# File 'lib/sequel/adapters/jdbc/postgresql.rb', line 29

def RubyPGHstore(r, i)
  if v = r.getObject(i)
    v.to_hash
  end
end

#RubyTime(r, i) ⇒ Object



67
68
69
70
71
# File 'lib/sequel/adapters/jdbc.rb', line 67

def RubyTime(r, i)
  if v = r.getTime(i)
    Sequel.string_to_time("#{v.to_string}.#{sprintf('%03i', v.getTime.divmod(1000).last)}")
  end
end

#RubyTimestamp(r, i) ⇒ Object



77
78
79
80
81
# File 'lib/sequel/adapters/jdbc.rb', line 77

def RubyTimestamp(r, i)
  if v = r.getTimestamp(i)
    Sequel.database_to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
  end
end

#SqlAnywhereBoolean(r, i) ⇒ Object



30
31
32
33
34
# File 'lib/sequel/adapters/jdbc/sqlanywhere.rb', line 30

def SqlAnywhereBoolean(r, i)
  if v = Short(r, i)
    v != 0
  end
end