Skip to content

Commit

Permalink
Put the drop/add function in a transaction. Maybe that will help it n…
Browse files Browse the repository at this point in the history
…ot go missing.
  • Loading branch information
Kurt Werle committed Aug 4, 2016
1 parent eb777e2 commit 1c6af01
Showing 1 changed file with 19 additions and 17 deletions.
36 changes: 19 additions & 17 deletions lib/geokit-rails/adapters/sqlserver.rb
Original file line number Diff line number Diff line change
@@ -1,43 +1,45 @@
module Geokit
module Adapters
class SQLServer < Abstract

class << self

def load(klass)
klass.connection.execute <<-EOS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[geokit_least]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[geokit_least]
EOS

klass.connection.execute <<-EOS
CREATE FUNCTION [dbo].geokit_least (@value1 float,@value2 float) RETURNS float AS BEGIN
return (SELECT CASE WHEN @value1 < @value2 THEN @value1 ELSE @value2 END) END
EOS
klass.transaction do
klass.connection.execute <<-EOS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[geokit_least]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[geokit_least]
EOS

klass.connection.execute <<-EOS
CREATE FUNCTION [dbo].geokit_least (@value1 float,@value2 float) RETURNS float AS BEGIN
return (SELECT CASE WHEN @value1 < @value2 THEN @value1 ELSE @value2 END) END
EOS
end
self.loaded = true
end

end

def initialize(*args)
super(*args)
end

def sphere_distance_sql(lat, lng, multiplier)
%|
(ACOS([dbo].geokit_least(1,COS(#{lat})*COS(#{lng})*COS(RADIANS(#{qualified_lat_column_name}))*COS(RADIANS(#{qualified_lng_column_name}))+
COS(#{lat})*SIN(#{lng})*COS(RADIANS(#{qualified_lat_column_name}))*SIN(RADIANS(#{qualified_lng_column_name}))+
SIN(#{lat})*SIN(RADIANS(#{qualified_lat_column_name}))))*#{multiplier})
|
end

def flat_distance_sql(origin, lat_degree_units, lng_degree_units)
%|
SQRT(POWER(#{lat_degree_units}*(#{origin.lat}-#{qualified_lat_column_name}),2)+
POWER(#{lng_degree_units}*(#{origin.lng}-#{qualified_lng_column_name}),2))
|
end

end
end
end
end

0 comments on commit 1c6af01

Please sign in to comment.