diff --git a/server/extension/cdb_dataservices_server--0.5.0--0.5.1.sql b/server/extension/cdb_dataservices_server--0.5.0--0.5.1.sql index 3298675..5990add 100644 --- a/server/extension/cdb_dataservices_server--0.5.0--0.5.1.sql +++ b/server/extension/cdb_dataservices_server--0.5.0--0.5.1.sql @@ -36,6 +36,21 @@ RETURNS boolean AS $$ return True $$ LANGUAGE plpythonu SECURITY DEFINER; +-- Get the Redis configuration from the _conf table -- +CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_internal_geocoder_config(username text, orgname text) +RETURNS boolean AS $$ + cache_key = "user_internal_geocoder_config_{0}".format(username) + if cache_key in GD: + return False + else: + from cartodb_services.metrics import InternalGeocoderConfig + plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) + redis_conn = GD["redis_connection_{0}".format(username)]['redis_metadata_connection'] + geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + GD[cache_key] = geocoder_config + return True +$$ LANGUAGE plpythonu SECURITY DEFINER; + CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_isolines_routing_config(username text, orgname text) RETURNS boolean AS $$ cache_key = "user_isolines_routing_config_{0}".format(username) @@ -137,7 +152,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -168,7 +184,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -199,7 +216,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -230,7 +248,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -261,7 +280,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -292,7 +312,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -323,7 +344,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -354,7 +376,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -385,7 +408,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -416,7 +440,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -447,7 +472,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: diff --git a/server/extension/cdb_dataservices_server--0.5.1--0.5.0.sql b/server/extension/cdb_dataservices_server--0.5.1--0.5.0.sql index 4355cf2..b869df7 100644 --- a/server/extension/cdb_dataservices_server--0.5.1--0.5.0.sql +++ b/server/extension/cdb_dataservices_server--0.5.1--0.5.0.sql @@ -1,6 +1,8 @@ --DO NOT MODIFY THIS FILE, IT IS GENERATED AUTOMATICALLY FROM SOURCES -- Complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "ALTER EXTENSION cdb_dataservices_server UPDATE TO '0.5.0'" to load this file. \quit +DROP FUNCTION IF EXISTS cdb_dataservices_server._get_internal_geocoder_config(text, text); + CREATE TYPE cdb_dataservices_server._redis_conf_params AS ( sentinel_master_id text, redis_host text, diff --git a/server/extension/sql/0.5.1/15_config_helper.sql b/server/extension/sql/0.5.1/15_config_helper.sql index d39a4fc..b521767 100644 --- a/server/extension/sql/0.5.1/15_config_helper.sql +++ b/server/extension/sql/0.5.1/15_config_helper.sql @@ -13,6 +13,21 @@ RETURNS boolean AS $$ return True $$ LANGUAGE plpythonu SECURITY DEFINER; +-- Get the Redis configuration from the _conf table -- +CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_internal_geocoder_config(username text, orgname text) +RETURNS boolean AS $$ + cache_key = "user_internal_geocoder_config_{0}".format(username) + if cache_key in GD: + return False + else: + from cartodb_services.metrics import InternalGeocoderConfig + plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) + redis_conn = GD["redis_connection_{0}".format(username)]['redis_metadata_connection'] + geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + GD[cache_key] = geocoder_config + return True +$$ LANGUAGE plpythonu SECURITY DEFINER; + -- Get the Redis configuration from the _conf table -- CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_isolines_routing_config(username text, orgname text) RETURNS boolean AS $$ diff --git a/server/extension/sql/0.5.1/30_admin0.sql b/server/extension/sql/0.5.1/30_admin0.sql index a626e2a..c6c0346 100644 --- a/server/extension/sql/0.5.1/30_admin0.sql +++ b/server/extension/sql/0.5.1/30_admin0.sql @@ -5,7 +5,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: diff --git a/server/extension/sql/0.5.1/40_admin1.sql b/server/extension/sql/0.5.1/40_admin1.sql index 457fd6e..f75d633 100644 --- a/server/extension/sql/0.5.1/40_admin1.sql +++ b/server/extension/sql/0.5.1/40_admin1.sql @@ -6,7 +6,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -38,7 +39,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: diff --git a/server/extension/sql/0.5.1/50_namedplaces.sql b/server/extension/sql/0.5.1/50_namedplaces.sql index 41fbd05..2a4676a 100644 --- a/server/extension/sql/0.5.1/50_namedplaces.sql +++ b/server/extension/sql/0.5.1/50_namedplaces.sql @@ -6,7 +6,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -38,7 +39,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -70,7 +72,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: diff --git a/server/extension/sql/0.5.1/60_postalcodes.sql b/server/extension/sql/0.5.1/60_postalcodes.sql index dfdc004..14f5da6 100644 --- a/server/extension/sql/0.5.1/60_postalcodes.sql +++ b/server/extension/sql/0.5.1/60_postalcodes.sql @@ -5,7 +5,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -36,7 +37,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -67,7 +69,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: @@ -98,7 +101,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: diff --git a/server/extension/sql/0.5.1/70_ips.sql b/server/extension/sql/0.5.1/70_ips.sql index c3c5c63..cca19a8 100644 --- a/server/extension/sql/0.5.1/70_ips.sql +++ b/server/extension/sql/0.5.1/70_ips.sql @@ -5,7 +5,8 @@ RETURNS Geometry AS $$ plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] - user_geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname) + plpy.execute("SELECT cdb_dataservices_server._get_internal_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_geocoder_config = GD["user_internal_geocoder_config_{0}".format(username)] quota_service = QuotaService(user_geocoder_config, redis_conn) try: