From 1fe561faa91fa1d2fc02fc465956f48579b402d5 Mon Sep 17 00:00:00 2001
From: Jev Zelenkov <jev.zelenkov@gmail.com>
Date: Thu, 17 Apr 2014 00:28:10 +0200
Subject: [PATCH] [2nd try] fixes postgres "unknown OID" warnings

---
 lib/geocoder/stores/active_record.rb | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb
index 38d0abc0..07f29c6f 100644
--- a/lib/geocoder/stores/active_record.rb
+++ b/lib/geocoder/stores/active_record.rb
@@ -196,11 +196,19 @@ module Geocoder::Store
         end
         if distance
           clause += ", " unless clause.empty?
-          clause += "#{distance} AS #{distance_column}"
+          if using_postgresql?
+            clause += "'#{distance}'::character(255) AS #{distance_column}"
+          else
+            clause += "#{distance} AS #{distance_column}"
+          end
         end
         if bearing
           clause += ", " unless clause.empty?
-          clause += "#{bearing} AS #{bearing_column}"
+          if using_postgresql?
+            clause += "'#{bearing}'::character(255) AS #{bearing_column}"
+          else
+            clause += "#{bearing} AS #{bearing_column}"
+          end
         end
         clause
       end
@@ -222,6 +230,10 @@ module Geocoder::Store
         connection.adapter_name.match(/sqlite/i)
       end
 
+      def using_postgresql?
+        connection.adapter_name.match(/postgres/i)
+      end
+
       ##
       # Value which can be passed to where() to produce no results.
       #
-- 
GitLab