From 1adfe8f9c51caaa9f6570e1a7c8cd95fd48e41e9 Mon Sep 17 00:00:00 2001
From: gersmann <stefan@gersmann.de>
Date: Fri, 29 Aug 2014 17:06:48 +0200
Subject: [PATCH] Refactor SQL statement to prevent table join

---
 lib/geocoder/lookups/maxmind_local.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/geocoder/lookups/maxmind_local.rb b/lib/geocoder/lookups/maxmind_local.rb
index 7a744038..c6fa4a06 100644
--- a/lib/geocoder/lookups/maxmind_local.rb
+++ b/lib/geocoder/lookups/maxmind_local.rb
@@ -35,8 +35,8 @@ module Geocoder::Lookup
       elsif configuration[:package] == :city
         addr = IPAddr.new(query.text).to_i
         q = "SELECT l.country, l.region, l.city, l.latitude, l.longitude
-          FROM maxmind_geolite_city_location l JOIN maxmind_geolite_city_blocks b USING (loc_id)
-          WHERE b.start_ip_num <= #{addr} AND #{addr} <= b.end_ip_num"
+          FROM maxmind_geolite_city_location l WHERE l.loc_id = (SELECT b.loc_id FROM maxmind_geolite_city_blocks b
+          WHERE b.start_ip_num <= #{addr} AND #{addr} <= b.end_ip_num)"
         format_result(q, [:country_name, :region_name, :city_name, :latitude, :longitude])
       elsif configuration[:package] == :country
         addr = IPAddr.new(query.text).to_i
-- 
GitLab