activerecord-mysql2rgeo-adapter 5.2.4 → 6.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a698ad5caaa0a41779553da7bdff16fab5f61c3feb8d370fe49f424f4ba5cfe1
4
- data.tar.gz: 5d7c95ea606c62bce8286b4dbb661b412e80712d9c8049925ee1a96c10fb8c4d
3
+ metadata.gz: 609c9daa90d73fa24300948060c080d5e75f38e63163fdff0ed15e8ed8185126
4
+ data.tar.gz: 141ea30c5e86b4c5dd6e86b6779343d063d377a2d51fb5f87bc68446f3bf34a3
5
5
  SHA512:
6
- metadata.gz: 0f256d79b6770604fa7497d0c9b28a92d9b4452f496cec7e461a2cd6f67dc7dc5d14e10934ffafd75ccc24d9fff50b539c2ab5729342a038eefe909681e95dde
7
- data.tar.gz: a6842cf1d6f984d0697e5c5baaa5587116a887aca288d7cfd15dcf02e12655e30a00b356fd9a3125e8ac43904cb16fc8ac78e76f905dc8665bec9dabd50b73e3
6
+ metadata.gz: 921929a8523f225a01db835ed7721d3bbc90f25ccce9eb99a74db9d708f07d81f65b331770b0d0e982d2b019906af4355086aa881cceb5424ec26b125d77ec88
7
+ data.tar.gz: 46551aa0b6cb5cdf5debcc2a3e06de0e9a31c24c77bb3e2aca7a76dc54fcb9ea5710a2f90b66c7baac2911e50880a38dc9ff072de2470c7265110fbf81dcf01d
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Arel # :nodoc:
4
- module Visitors # :nodoc:
3
+ module Arel # :nodoc:
4
+ module Visitors # :nodoc:
5
5
  # Different super-class under JRuby JDBC adapter.
6
6
  MySQLSuperclass = if defined?(::ArJdbc::MySQL::BindSubstitution)
7
7
  ::ArJdbc::MySQL::BindSubstitution
@@ -27,12 +27,55 @@ module Arel # :nodoc:
27
27
  end
28
28
 
29
29
  def visit_String(node, collector)
30
- collector << "#{st_func('ST_WKTToSQL')}(#{quote(node)})"
30
+ node, srid = Mysql2Rgeo.parse_node(node)
31
+ collector << if srid == 0
32
+ "#{st_func('ST_WKTToSQL')}(#{quote(node)})"
33
+ else
34
+ "#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid})"
35
+ end
31
36
  end
32
37
 
33
38
  def visit_RGeo_ActiveRecord_SpatialNamedFunction(node, collector)
34
39
  aggregate(st_func(node.name), node, collector)
35
40
  end
41
+
42
+ def visit_in_spatial_context(node, collector)
43
+ case node
44
+ when String
45
+ node, srid = Mysql2Rgeo.parse_node(node)
46
+ collector << if srid == 0
47
+ "#{st_func('ST_WKTToSQL')}(#{quote(node)})"
48
+ else
49
+ "#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid})"
50
+ end
51
+ when RGeo::Feature::Instance
52
+ collector << visit_RGeo_Feature_Instance(node, collector)
53
+ when RGeo::Cartesian::BoundingBox
54
+ collector << visit_RGeo_Cartesian_BoundingBox(node, collector)
55
+ else
56
+ visit(node, collector)
57
+ end
58
+ end
59
+
60
+ def self.parse_node(node)
61
+ value, srid = nil, 0
62
+ if node =~ /.*;.*$/i
63
+ params = Regexp.last_match(0).split(";")
64
+ if params.first =~ /(srid|SRID)=\d*/
65
+ srid = params.first.split("=").last.to_i
66
+ else
67
+ value = params.first
68
+ end
69
+ if params.last =~ /(srid|SRID)=\d*/
70
+ srid = params.last.split("=").last.to_i
71
+ else
72
+ value = params.last
73
+ end
74
+ else
75
+ value = node
76
+ end
77
+ [value, srid]
78
+ end
36
79
  end
37
80
  end
38
81
  end
@@ -5,46 +5,46 @@ module ActiveRecord
5
5
  module Mysql2Rgeo
6
6
  module ColumnMethods
7
7
  def spatial(name, options = {})
8
- raise "You must set a type. For example: 't.spatial type: :point'" unless options[:type]
8
+ raise "You must set a type. For example: 't.spatial type: :st_point'" unless options[:type]
9
9
 
10
- column(name, options[:type], options)
10
+ column(name, options[:type], **options)
11
11
  end
12
12
 
13
13
  def geometry(name, options = {})
14
- column(name, :geometry, options)
14
+ column(name, :geometry, **options)
15
15
  end
16
16
 
17
17
  def geometry_collection(name, options = {})
18
- column(name, :geometrycollection, options)
18
+ column(name, :geometrycollection, **options)
19
19
  end
20
20
  alias geometrycollection geometry_collection
21
21
 
22
22
  def line_string(name, options = {})
23
- column(name, :linestring, options)
23
+ column(name, :linestring, **options)
24
24
  end
25
25
  alias linestring line_string
26
26
 
27
27
  def multi_line_string(name, options = {})
28
- column(name, :multilinestring, options)
28
+ column(name, :multilinestring, **options)
29
29
  end
30
30
  alias multilinestring multi_line_string
31
31
 
32
32
  def multi_point(name, options = {})
33
- column(name, :multipoint, options)
33
+ column(name, :multipoint, **options)
34
34
  end
35
35
  alias multipoint multi_point
36
36
 
37
37
  def multi_polygon(name, options = {})
38
- column(name, :multipolygon, options)
38
+ column(name, :multipolygon, **options)
39
39
  end
40
40
  alias multipolygon multi_polygon
41
41
 
42
42
  def point(name, options = {})
43
- column(name, :point, options)
43
+ column(name, :point, **options)
44
44
  end
45
45
 
46
46
  def polygon(name, options = {})
47
- column(name, :polygon, options)
47
+ column(name, :polygon, **options)
48
48
  end
49
49
  end
50
50
  end
@@ -15,7 +15,7 @@ module ActiveRecord # :nodoc:
15
15
  mysql2_connection(config)
16
16
  end
17
17
 
18
- alias_method :jdbcmysql2rgeo_connection, :mysql2rgeo_connection
18
+ alias jdbcmysql2rgeo_connection mysql2rgeo_connection
19
19
 
20
20
  else
21
21
 
@@ -39,8 +39,8 @@ module ActiveRecord # :nodoc:
39
39
 
40
40
  client = Mysql2::Client.new(config)
41
41
  ConnectionAdapters::Mysql2RgeoAdapter.new(client, logger, nil, config)
42
- rescue Mysql2::Error => error
43
- if error.message.include?("Unknown database")
42
+ rescue Mysql2::Error => e
43
+ if e.message.include?("Unknown database")
44
44
  raise ActiveRecord::NoDatabaseError
45
45
  else
46
46
  raise
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ module Mysql2Rgeo
6
+ class SchemaCreation < MySQL::SchemaCreation # :nodoc:
7
+ delegate :supports_expression_index?, to: :@conn, private: true
8
+
9
+ private
10
+
11
+ def add_column_options!(sql, options)
12
+ # By default, TIMESTAMP columns are NOT NULL, cannot contain NULL values,
13
+ # and assigning NULL assigns the current timestamp. To permit a TIMESTAMP
14
+ # column to contain NULL, explicitly declare it with the NULL attribute.
15
+ # See https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
16
+ if /\Atimestamp\b/.match?(options[:column].sql_type) && !options[:primary_key]
17
+ sql << " NULL" unless options[:null] == false || options_include_default?(options)
18
+ end
19
+
20
+ if options[:srid]
21
+ sql << " /*!80003 SRID #{options[:srid]} */"
22
+ end
23
+
24
+ if charset = options[:charset]
25
+ sql << " CHARACTER SET #{charset}"
26
+ end
27
+
28
+ if collation = options[:collation]
29
+ sql << " COLLATE #{collation}"
30
+ end
31
+
32
+ if as = options[:as]
33
+ sql << " AS (#{as})"
34
+ if options[:stored]
35
+ sql << (mariadb? ? " PERSISTENT" : " STORED")
36
+ end
37
+ end
38
+
39
+ add_sql_comment!(super, options[:comment])
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -4,15 +4,20 @@ module ActiveRecord
4
4
  module ConnectionAdapters
5
5
  module Mysql2Rgeo
6
6
  module SchemaStatements
7
+ # super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb
8
+
7
9
  # override
8
10
  def indexes(table_name) #:nodoc:
9
11
  indexes = super
10
12
  # HACK(aleks, 06/15/18): MySQL 5 does not support prefix lengths for spatial indexes
11
13
  # https://dev.mysql.com/doc/refman/5.6/en/create-index.html
12
- indexes.select { |idx| idx.type == :spatial }.each { |idx| idx.is_a?(Struct) ? idx.lengths = {} : idx.instance_variable_set(:@lengths, {}) }
14
+ indexes.select do |idx|
15
+ idx.type == :spatial
16
+ end.each { |idx| idx.is_a?(Struct) ? idx.lengths = {} : idx.instance_variable_set(:@lengths, {}) }
13
17
  indexes
14
18
  end
15
19
 
20
+ # override
16
21
  def type_to_sql(type, limit: nil, precision: nil, scale: nil, unsigned: nil, **) # :nodoc:
17
22
  if (info = RGeo::ActiveRecord.geometric_type_from_name(type.to_s.delete("_")))
18
23
  type = limit[:type] || type if limit.is_a?(::Hash)
@@ -40,7 +45,8 @@ module ActiveRecord
40
45
 
41
46
  def initialize_type_map(m = type_map)
42
47
  super
43
- %w(
48
+
49
+ %w[
44
50
  geometry
45
51
  geometrycollection
46
52
  point
@@ -49,38 +55,57 @@ module ActiveRecord
49
55
  multipoint
50
56
  multilinestring
51
57
  multipolygon
52
- ).each do |geo_type|
53
- m.register_type(geo_type, Type::Spatial.new(geo_type))
58
+ ].each do |geo_type|
59
+ m.register_type(geo_type) do |sql_type|
60
+ Type::Spatial.new(sql_type)
61
+ end
54
62
  end
55
63
  end
56
64
 
57
65
  private
58
66
 
59
67
  # override
60
- def create_table_definition(*args)
61
- Mysql2Rgeo::TableDefinition.new(*args)
68
+ def schema_creation
69
+ Mysql2Rgeo::SchemaCreation.new(self)
70
+ end
71
+
72
+ # override
73
+ def create_table_definition(*args, **options)
74
+ Mysql2Rgeo::TableDefinition.new(self, *args, **options)
62
75
  end
63
76
 
64
77
  # override
65
78
  def new_column_from_field(table_name, field)
66
79
  type_metadata = fetch_type_metadata(field[:Type], field[:Extra])
67
- if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\([0-6]?\))?\z/i.match?(field[:Default])
68
- default, default_function = nil, field[:Default]
69
- else
70
- default, default_function = field[:Default], nil
80
+ default, default_function = field[:Default], nil
81
+
82
+ if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\([0-6]?\))?\z/i.match?(default)
83
+ default, default_function = nil, default
84
+ elsif type_metadata.extra == "DEFAULT_GENERATED"
85
+ default = +"(#{default})" unless default.start_with?("(")
86
+ default, default_function = nil, default
71
87
  end
72
88
 
89
+ # {:dimension=>2, :has_m=>false, :has_z=>false, :name=>"latlon", :srid=>0, :type=>"GEOMETRY"}
90
+ spatial = spatial_column_info(table_name).get(field[:Field], type_metadata.sql_type)
91
+
73
92
  SpatialColumn.new(
74
- field[:Field],
75
- default,
76
- type_metadata,
77
- field[:Null] == "YES",
78
- table_name,
79
- default_function,
80
- field[:Collation],
81
- comment: field[:Comment].presence
93
+ field[:Field],
94
+ default,
95
+ type_metadata,
96
+ field[:Null] == "YES",
97
+ default_function,
98
+ collation: field[:Collation],
99
+ comment: field[:Comment].presence,
100
+ spatial: spatial
82
101
  )
83
102
  end
103
+
104
+ # memoize hash of column infos for tables
105
+ def spatial_column_info(table_name)
106
+ @spatial_column_info ||= {}
107
+ @spatial_column_info[table_name.to_sym] = SpatialColumnInfo.new(self, table_name.to_s)
108
+ end
84
109
  end
85
110
  end
86
111
  end
@@ -1,21 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord # :nodoc:
2
4
  module ConnectionAdapters # :nodoc:
3
5
  module Mysql2Rgeo # :nodoc:
4
6
  class SpatialColumn < ConnectionAdapters::MySQL::Column # :nodoc:
5
- def initialize(name, default, sql_type_metadata = nil, null = true, table_name = nil, default_function = nil, collation = nil, comment: nil)
6
- @geometric_type = nil
7
- if sql_type =~ /geometry|point|linestring|polygon/i
7
+ def initialize(name, default, sql_type_metadata = nil, null = true, default_function = nil, collation: nil, comment: nil, spatial: nil, **)
8
+ @sql_type_metadata = sql_type_metadata
9
+ if spatial
10
+ # This case comes from an entry in the geometry_columns table
11
+ set_geometric_type_from_name(spatial[:type])
12
+ @srid = spatial[:srid].to_i
13
+ elsif sql_type =~ /geometry|point|linestring|polygon/i
8
14
  build_from_sql_type(sql_type_metadata.sql_type)
9
15
  elsif sql_type_metadata.sql_type =~ /geometry|point|linestring|polygon/i
10
16
  # A geometry column with no geometry_columns entry.
11
17
  # @geometric_type = geo_type_from_sql_type(sql_type)
12
18
  build_from_sql_type(sql_type_metadata.sql_type)
13
19
  end
14
- super(name, default, sql_type_metadata, null, table_name, default_function, collation, comment: comment)
20
+ super(name, default, sql_type_metadata, null, default_function, collation: collation, comment: comment)
15
21
  if spatial?
16
22
  if @srid
17
- @limit = { type: @geometric_type.type_name.underscore }
18
- @limit[:srid] = @srid if @srid
23
+ @limit = { type: @geometric_type.type_name.underscore, srid: @srid }
19
24
  end
20
25
  end
21
26
  end
@@ -34,9 +39,9 @@ module ActiveRecord # :nodoc:
34
39
  false
35
40
  end
36
41
 
37
- alias :geographic? :geographic
38
- alias :has_z? :has_z
39
- alias :has_m? :has_m
42
+ alias geographic? geographic
43
+ alias has_z? has_z
44
+ alias has_m? has_m
40
45
 
41
46
  def limit
42
47
  if spatial?
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord # :nodoc:
4
+ module ConnectionAdapters # :nodoc:
5
+ module Mysql2Rgeo # :nodoc:
6
+ # Do spatial sql queries for column info and memoize that info.
7
+ class SpatialColumnInfo
8
+ def initialize(adapter, table_name)
9
+ @adapter = adapter
10
+ @table_name = table_name
11
+ end
12
+
13
+ def all
14
+ info = if @adapter.supports_expression_index?
15
+ @adapter.query(
16
+ "SELECT column_name, srs_id, column_type FROM INFORMATION_SCHEMA.Columns WHERE table_name='#{@table_name}'"
17
+ )
18
+ else
19
+ @adapter.query(
20
+ "SELECT column_name, 0, column_type FROM INFORMATION_SCHEMA.Columns WHERE table_name='#{@table_name}'"
21
+ )
22
+ end
23
+
24
+ result = {}
25
+ info.each do |row|
26
+ name = row[0]
27
+ type = row[2]
28
+ type.sub!(/m$/, "")
29
+ result[name] = {
30
+ name: name,
31
+ srid: row[1].to_i,
32
+ type: type,
33
+ }
34
+ end
35
+ result
36
+ end
37
+
38
+ # do not query the database for non-spatial columns/tables
39
+ def get(column_name, type)
40
+ return unless Mysql2RgeoAdapter.spatial_column_options(type.to_sym)
41
+
42
+ @spatial_column_info ||= all
43
+ @spatial_column_info[column_name]
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  module Mysql2Rgeo
@@ -13,6 +15,6 @@ module RGeo
13
15
  end
14
16
 
15
17
  # Allow chaining of spatial expressions from attributes
16
- Arel::Attribute.send :include, RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
17
- RGeo::ActiveRecord::SpatialConstantNode.send :include, RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
18
- RGeo::ActiveRecord::SpatialNamedFunction.send :include, RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
18
+ Arel::Attribute.include RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
19
+ RGeo::ActiveRecord::SpatialConstantNode.include RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
20
+ RGeo::ActiveRecord::SpatialNamedFunction.include RGeo::ActiveRecord::Mysql2Rgeo::SpatialExpressions
@@ -1,22 +1,23 @@
1
- module ActiveRecord # :nodoc:
2
- module ConnectionAdapters # :nodoc:
3
- module Mysql2Rgeo # :nodoc:
4
- class TableDefinition < MySQL::TableDefinition # :nodoc:
5
- include ColumnMethods
1
+ # frozen_string_literal: true
6
2
 
3
+ module ActiveRecord # :nodoc:
4
+ module ConnectionAdapters # :nodoc:
5
+ module Mysql2Rgeo # :nodoc:
6
+ class TableDefinition < MySQL::TableDefinition # :nodoc:
7
+ include ColumnMethods
7
8
  # super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
8
- def new_column_definition(name, type, options)
9
+ def new_column_definition(name, type, **options)
9
10
  if (info = Mysql2RgeoAdapter.spatial_column_options(type.to_sym))
10
- if (limit = options.delete(:limit))
11
- options.merge!(limit) if limit.is_a?(::Hash)
11
+ if (limit = options.delete(:limit)) && limit.is_a?(::Hash)
12
+ options.merge!(limit)
12
13
  end
13
14
 
14
15
  geo_type = ColumnDefinitionUtils.geo_type(options[:type] || type || info[:type])
15
16
 
16
17
  options[:spatial_type] = geo_type
17
- column = super(name, geo_type.downcase.to_sym, options)
18
+ column = super(name, geo_type.downcase.to_sym, **options)
18
19
  else
19
- column = super(name, type, options)
20
+ column = super(name, type, **options)
20
21
  end
21
22
 
22
23
  column
@@ -26,7 +27,7 @@ module ActiveRecord # :nodoc:
26
27
  module ColumnDefinitionUtils
27
28
  class << self
28
29
  def geo_type(type = "GEOMETRY")
29
- type.to_s.delete('_').upcase
30
+ type.to_s.delete("_").upcase
30
31
  end
31
32
 
32
33
  def default_srid(options)
@@ -3,7 +3,7 @@
3
3
  module ActiveRecord
4
4
  module ConnectionAdapters
5
5
  module Mysql2Rgeo
6
- VERSION = "5.2.4"
6
+ VERSION = "6.0.3"
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -17,14 +17,15 @@ end
17
17
  require "active_record/connection_adapters/mysql2_adapter"
18
18
  require "active_record/connection_adapters/mysql2rgeo/version"
19
19
  require "active_record/connection_adapters/mysql2rgeo/column_methods"
20
+ require "active_record/connection_adapters/mysql2rgeo/schema_creation"
20
21
  require "active_record/connection_adapters/mysql2rgeo/schema_statements"
21
22
  require "active_record/connection_adapters/mysql2rgeo/spatial_table_definition"
22
23
  require "active_record/connection_adapters/mysql2rgeo/spatial_column"
24
+ require "active_record/connection_adapters/mysql2rgeo/spatial_column_info"
23
25
  require "active_record/connection_adapters/mysql2rgeo/spatial_expressions"
24
26
  require "active_record/connection_adapters/mysql2rgeo/arel_tosql"
25
27
  require "active_record/type/spatial"
26
28
  require "active_record/connection_adapters/mysql2rgeo/create_connection"
27
- require "active_record/tasks/database_tasks"
28
29
 
29
30
  # :startdoc:
30
31
 
@@ -44,7 +45,7 @@ module ActiveRecord
44
45
  spatial: { type: "geometry" },
45
46
  point: {},
46
47
  polygon: {}
47
- }
48
+ }.freeze
48
49
 
49
50
  # http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
50
51
  DEFAULT_SRID = 0
@@ -21,7 +21,6 @@ module ActiveRecord
21
21
  # srid: 1234
22
22
  def self.parse_sql_type(sql_type)
23
23
  geo_type, srid = nil, 0, false, false
24
-
25
24
  if sql_type =~ /(geography|geometry)\((.*)\)$/i
26
25
  # geometry(Point)
27
26
  # geometry(Point,4326)
@@ -67,7 +66,7 @@ module ActiveRecord
67
66
 
68
67
  geo_value = cast_value(value)
69
68
 
70
- # TODO - only valid types should be allowed
69
+ # TODO: - only valid types should be allowed
71
70
  # e.g. linestring is not valid for point column
72
71
  raise "maybe should raise" unless RGeo::Feature::Geometry.check_type(geo_value)
73
72
 
@@ -82,16 +81,18 @@ module ActiveRecord
82
81
  ::String === value ? parse_wkt(value) : value
83
82
  end
84
83
 
84
+ # convert WKT string into RGeo object
85
85
  def parse_wkt(string)
86
86
  marker = string[4, 1]
87
- if marker == "\x00" || marker == "\x01"
88
- srid = string[0, 4].unpack(marker == "\x01" ? "V" : "N").first
89
- RGeo::WKRep::WKBParser.new(spatial_factory, support_ewkb: true, default_srid: srid).parse(string[4..-1])
87
+ if ["\x00", "\x01"].include?(marker)
88
+ @srid = string[0, 4].unpack1(marker == "\x01" ? "V" : "N")
89
+ RGeo::WKRep::WKBParser.new(spatial_factory, support_ewkb: true, default_srid: @srid).parse(string[4..-1])
90
90
  elsif string[0, 10] =~ /[0-9a-fA-F]{8}0[01]/
91
- srid = string[0, 8].to_i(16)
92
- srid = [srid].pack("V").unpack("N").first if string[9, 1] == "1"
91
+ @srid = string[0, 8].to_i(16)
92
+ @srid = [@srid].pack("V").unpack("N").first if string[9, 1] == "1"
93
93
  RGeo::WKRep::WKBParser.new(spatial_factory, support_ewkb: true, default_srid: srid).parse(string[8..-1])
94
94
  else
95
+ string, @srid = Arel::Visitors::Mysql2Rgeo.parse_node(string)
95
96
  RGeo::WKRep::WKTParser.new(spatial_factory, support_ewkt: true, default_srid: @srid).parse(string)
96
97
  end
97
98
  rescue RGeo::Error::ParseError, RGeo::Error::InvalidGeometry
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-mysql2rgeo-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.4
4
+ version: 6.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yongdae Hwang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-01 00:00:00.000000000 Z
11
+ date: 2021-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: 6.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.1'
26
+ version: 6.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rgeo-activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -106,8 +106,10 @@ files:
106
106
  - lib/active_record/connection_adapters/mysql2rgeo/arel_tosql.rb
107
107
  - lib/active_record/connection_adapters/mysql2rgeo/column_methods.rb
108
108
  - lib/active_record/connection_adapters/mysql2rgeo/create_connection.rb
109
+ - lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb
109
110
  - lib/active_record/connection_adapters/mysql2rgeo/schema_statements.rb
110
111
  - lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb
112
+ - lib/active_record/connection_adapters/mysql2rgeo/spatial_column_info.rb
111
113
  - lib/active_record/connection_adapters/mysql2rgeo/spatial_expressions.rb
112
114
  - lib/active_record/connection_adapters/mysql2rgeo/spatial_table_definition.rb
113
115
  - lib/active_record/connection_adapters/mysql2rgeo/version.rb
@@ -116,7 +118,7 @@ files:
116
118
  - lib/activerecord-mysql2rgeo-adapter.rb
117
119
  homepage: http://github.com/stadia/activerecord-mysql2rgeo-adapter
118
120
  licenses:
119
- - 0BSD
121
+ - BSD-3-Clause
120
122
  metadata: {}
121
123
  post_install_message:
122
124
  rdoc_options: []
@@ -126,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
128
  requirements:
127
129
  - - ">="
128
130
  - !ruby/object:Gem::Version
129
- version: 2.2.2
131
+ version: 2.5.0
130
132
  required_rubygems_version: !ruby/object:Gem::Requirement
131
133
  requirements:
132
134
  - - ">="