Module: DB::Postgres::Native

Extended by:
FFI::Module::ConfigTool, FFI::Module::Library, FFI::Module::Loader
Defined in:
lib/db/postgres/native.rb,
lib/db/postgres/native/field.rb,
lib/db/postgres/native/types.rb,
lib/db/postgres/native/result.rb,
lib/db/postgres/native/connection.rb

Defined Under Namespace

Modules: IO, Types Classes: Connection, Result, Strings

Constant Summary collapse

DEFAULT_TYPES =
{
  # Pseudo types:
  primary_key: Types::Integer.new('BIGSERIAL PRIMARY KEY'),
  foreign_key: Types::Integer.new('BIGINT'),
  text: Types::Text.new("TEXT"),
  string: Types::Text.new("VARCHAR(255)"),
  
  # Symbolic types:
  decimal: Types::Decimal.new,
  boolean: Types::Boolean.new,
  
  smallint: Types::Integer.new("SMALLINT"),
  integer: Types::Integer.new("INTEGER"),
  bigint: Types::Integer.new("BIGINT"),
  
  float: Types::Float.new,
  double: Types::Float.new("DOUBLE"),
  
  timestamp: Types::DateTime.new("TIMESTAMP"),
  date: Types::Date.new,
  datetime: Types::DateTime.new("DATETIME"),
  year: Types::Integer.new("LONG"),
  
  json: Types::JSON.new,
  enum: Types::Symbol.new,
  
  # Native types:
  # This data is extracted by hand from:
  # <https://github.com/postgres/postgres/blob/master/src/include/catalog/pg_type.dat>.
  # These are hard coded OIDs.
  16 => Types::Boolean.new,
  
  20 => Types::Integer.new("int8"),
  21 => Types::Integer.new("int2"),
  23 => Types::Integer.new("int4"),
  
  114 => Types::JSON.new,
  
  700 => Types::Float.new('float4'),
  701 => Types::Float.new('float8'),
  
  1082 => Types::Date.new,
  1083 => Types::DateTime.new("TIME"),
  
  1114 => Types::DateTime.new("TIMESTAMP"),
  1184 => Types::DateTime.new("TIMESTAMPTZ"),
  
  1700 => Types::Decimal.new,
  
  # Not sure if this is ever used?
  3500 => Types::Symbol.new,
}