Sha256: 2b26f09f993fd5500c8cea0eae97259c3224d37ebc3d2eca820858cfcd396b57
Contents?: true
Size: 1.28 KB
Versions: 5
Compression:
Stored size: 1.28 KB
Contents
module ActiveRecord # :nodoc: module ConnectionAdapters # :nodoc: module PostGISAdapter # Do spatial sql queries for column info and memoize that info. class SpatialColumnInfo def initialize(adapter, table_name) @adapter = adapter @table_name = table_name end def all info = @adapter.query("SELECT f_geometry_column,coord_dimension,srid,type FROM geometry_columns WHERE f_table_name='#{@table_name}'") result = {} info.each do |row| name = row[0] type = row[3] dimension = row[1].to_i has_m = !!(type =~ /m$/i) type.sub!(/m$/, '') has_z = dimension > 3 || dimension == 3 && !has_m result[name] = { dimension: dimension, has_m: has_m, has_z: has_z, name: name, srid: row[2].to_i, type: type, } end result end # will not query the database for non-spatial columns/tables def get(column_name, type) return nil unless type =~ /geometry/i @spatial_column_info ||= all @spatial_column_info[column_name] end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems