Class: ActiveRecord::ConnectionAdapters::Mysql2RgeoAdapter

Inherits:
Mysql2Adapter
  • Object
show all
Includes:
ActiveRecord::ConnectionAdapters::Mysql2Rgeo::SchemaStatements
Defined in:
lib/active_record/connection_adapters/mysql2rgeo_adapter.rb

Constant Summary collapse

SPATIAL_COLUMN_OPTIONS =
{
  geometry:            {},
  geometrycollection:  {},
  linestring:          {},
  multilinestring:     {},
  multipoint:          {},
  multipolygon:        {},
  spatial:             { type: "geometry" },
  point:               {},
  polygon:             {}
}.freeze
DEFAULT_SRID =
0

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActiveRecord::ConnectionAdapters::Mysql2Rgeo::SchemaStatements

#indexes, #initialize_type_map, #native_database_types, #type_to_sql

Constructor Details

#initialize(connection, logger, connection_options, config) ⇒ Mysql2RgeoAdapter

Returns a new instance of Mysql2RgeoAdapter.



53
54
55
56
57
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 53

def initialize(connection, logger, connection_options, config)
  super

  @visitor = Arel::Visitors::Mysql2Rgeo.new(self)
end

Class Method Details

.spatial_column_options(key) ⇒ Object



63
64
65
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 63

def self.spatial_column_options(key)
  SPATIAL_COLUMN_OPTIONS[key]
end

Instance Method Details

#adapter_nameObject



59
60
61
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 59

def adapter_name
  "Mysql2Rgeo"
end

#default_sridObject



67
68
69
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 67

def default_srid
  DEFAULT_SRID
end

#quote(value) ⇒ Object



75
76
77
78
79
80
81
82
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 75

def quote(value)
  dbval = value.try(:value_for_database) || value
  if RGeo::Feature::Geometry.check_type(dbval)
    "ST_GeomFromWKB(0x#{RGeo::WKRep::WKBGenerator.new(hex_format: true, little_endian: true).generate(dbval)},#{dbval.srid})"
  else
    super
  end
end

#supports_spatial?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb', line 71

def supports_spatial?
  !mariadb? && version >= "5.7.6"
end