activerecord-postgis-adapter 8.0.0 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/active_record/connection_adapters/postgis/schema_statements.rb +6 -45
- data/lib/active_record/connection_adapters/postgis/spatial_column.rb +2 -2
- data/lib/active_record/connection_adapters/postgis/version.rb +1 -1
- data/lib/active_record/connection_adapters/postgis_adapter.rb +18 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0e36778a7f367dc3b7477d7f389d94360b0f9130791cea0120b81f0feef745b
|
4
|
+
data.tar.gz: 29d1233c9abbd1bbf0b0325310acb5a23eca2ba9baab7756729c2ea2bf6d14ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce7fda2c1d2baa1a4ab7ba120ad643468e12ed68b7e7100e5a1ef002e803fac5c8b764514d108986942e41729809b24ef31e7a6b75b14658bfe6bbb5e5407fad
|
7
|
+
data.tar.gz: 7e7d8e706991da86fb963735a67f1f28a9e97d258bf1fe099d6f61f449e0f16064909f2a96614fa8737e87cd31c2f99c3982d8d5e6da782f29a3a01bfbc6886b
|
@@ -5,18 +5,17 @@ module ActiveRecord
|
|
5
5
|
module PostGIS
|
6
6
|
module SchemaStatements
|
7
7
|
# override
|
8
|
-
# https://github.com/rails/rails/blob/
|
8
|
+
# https://github.com/rails/rails/blob/7-0-stable/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L662
|
9
9
|
# Create a SpatialColumn instead of a PostgreSQL::Column
|
10
10
|
def new_column_from_field(table_name, field)
|
11
|
-
column_name, type, default, notnull, oid, fmod, collation, comment = field
|
11
|
+
column_name, type, default, notnull, oid, fmod, collation, comment, attgenerated = field
|
12
12
|
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
|
13
13
|
default_value = extract_value_from_default(default)
|
14
14
|
default_function = extract_default_function(default_value, default)
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
16
|
+
if match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/)
|
17
|
+
serial = sequence_name_from_parts(table_name, column_name, match[:suffix]) == match[:sequence_name]
|
18
|
+
end
|
20
19
|
|
21
20
|
# {:dimension=>2, :has_m=>false, :has_z=>false, :name=>"latlon", :srid=>0, :type=>"GEOMETRY"}
|
22
21
|
spatial = spatial_column_info(table_name).get(column_name, type_metadata.sql_type)
|
@@ -30,49 +29,11 @@ module ActiveRecord
|
|
30
29
|
collation: collation,
|
31
30
|
comment: comment.presence,
|
32
31
|
serial: serial,
|
32
|
+
generated: attgenerated,
|
33
33
|
spatial: spatial
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
37
|
-
# override
|
38
|
-
# https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L544
|
39
|
-
#
|
40
|
-
# returns Postgresql sql type string
|
41
|
-
# examples:
|
42
|
-
# "geometry(Point,4326)"
|
43
|
-
# "geography(Point,4326)"
|
44
|
-
#
|
45
|
-
# note: type alone is not enough to detect the sql type,
|
46
|
-
# so `limit` is used to pass the additional information. :(
|
47
|
-
#
|
48
|
-
# type_to_sql(:geography, limit: "Point,4326")
|
49
|
-
# => "geography(Point,4326)"
|
50
|
-
def type_to_sql(type, limit: nil, precision: nil, scale: nil, array: nil, **)
|
51
|
-
case type.to_s
|
52
|
-
when "geometry", "geography"
|
53
|
-
"#{type}(#{limit})"
|
54
|
-
else
|
55
|
-
super
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# override
|
60
|
-
def native_database_types
|
61
|
-
# Add spatial types
|
62
|
-
super.merge(
|
63
|
-
geography: { name: "geography" },
|
64
|
-
geometry: { name: "geometry" },
|
65
|
-
geometry_collection: { name: "geometry_collection" },
|
66
|
-
line_string: { name: "line_string" },
|
67
|
-
multi_line_string: { name: "multi_line_string" },
|
68
|
-
multi_point: { name: "multi_point" },
|
69
|
-
multi_polygon: { name: "multi_polygon" },
|
70
|
-
spatial: { name: "geometry" },
|
71
|
-
st_point: { name: "st_point" },
|
72
|
-
st_polygon: { name: "st_polygon" }
|
73
|
-
)
|
74
|
-
end
|
75
|
-
|
76
37
|
# override
|
77
38
|
def create_table_definition(*args, **kwargs)
|
78
39
|
PostGIS::TableDefinition.new(self, *args, **kwargs)
|
@@ -9,7 +9,7 @@ module ActiveRecord # :nodoc:
|
|
9
9
|
# "Geography(Point,4326)"
|
10
10
|
def initialize(name, default, sql_type_metadata = nil, null = true,
|
11
11
|
default_function = nil, collation: nil, comment: nil,
|
12
|
-
serial: nil, spatial: nil)
|
12
|
+
serial: nil, generated: nil, spatial: nil)
|
13
13
|
@sql_type_metadata = sql_type_metadata
|
14
14
|
@geographic = !!(sql_type_metadata.sql_type =~ /geography\(/i)
|
15
15
|
if spatial
|
@@ -31,7 +31,7 @@ module ActiveRecord # :nodoc:
|
|
31
31
|
build_from_sql_type(sql_type_metadata.sql_type)
|
32
32
|
end
|
33
33
|
super(name, default, sql_type_metadata, null, default_function,
|
34
|
-
collation: collation, comment: comment, serial: serial)
|
34
|
+
collation: collation, comment: comment, serial: serial, generated: generated)
|
35
35
|
if spatial? && @srid
|
36
36
|
@limit = { srid: @srid, type: to_type_name(geometric_type) }
|
37
37
|
@limit[:has_z] = true if @has_z
|
@@ -90,6 +90,24 @@ module ActiveRecord
|
|
90
90
|
|
91
91
|
super
|
92
92
|
end
|
93
|
+
|
94
|
+
def native_database_types
|
95
|
+
@native_database_types ||= begin
|
96
|
+
default_types = PostgreSQLAdapter.native_database_types
|
97
|
+
default_types.merge({
|
98
|
+
geography: { name: "geography" },
|
99
|
+
geometry: { name: "geometry" },
|
100
|
+
geometry_collection: { name: "geometry_collection" },
|
101
|
+
line_string: { name: "line_string" },
|
102
|
+
multi_line_string: { name: "multi_line_string" },
|
103
|
+
multi_point: { name: "multi_point" },
|
104
|
+
multi_polygon: { name: "multi_polygon" },
|
105
|
+
spatial: { name: "geometry" },
|
106
|
+
st_point: { name: "st_point" },
|
107
|
+
st_polygon: { name: "st_polygon" }
|
108
|
+
})
|
109
|
+
end
|
110
|
+
end
|
93
111
|
end
|
94
112
|
|
95
113
|
def srs_database_columns
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgis-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.0.
|
4
|
+
version: 8.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Azuma
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-01
|
12
|
+
date: 2022-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|