Merge branch 'development' into tomtom_bulk_qps_retry
This commit is contained in:
commit
3560c07d7f
8
.github/workflows/main.yml
vendored
8
.github/workflows/main.yml
vendored
@ -32,6 +32,10 @@ jobs:
|
|||||||
- name: Start docker-compose services
|
- name: Start docker-compose services
|
||||||
run: docker-compose -f docker-compose.yaml up -d
|
run: docker-compose -f docker-compose.yaml up -d
|
||||||
|
|
||||||
|
- name: Install required python3 libs
|
||||||
|
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "cd /dataservices-api/server/ && sudo pip3 install -U -r ./lib/python/cartodb_services/requirements.txt && sudo pip3 install -U ./lib/python/cartodb_services"
|
||||||
|
if: env.PG_VERSION == 12
|
||||||
|
|
||||||
- name: Install required python libs
|
- name: Install required python libs
|
||||||
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "cd /dataservices-api/server/ && pip install -U -r ./lib/python/cartodb_services/requirements.txt && pip install -U ./lib/python/cartodb_services"
|
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "cd /dataservices-api/server/ && pip install -U -r ./lib/python/cartodb_services/requirements.txt && pip install -U ./lib/python/cartodb_services"
|
||||||
|
|
||||||
@ -44,9 +48,9 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
- name: Run server tests
|
- name: Run server tests
|
||||||
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "cd /dataservices-api/server/extension/ && sudo make clean all install installcheck"
|
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "cd /dataservices-api/server/extension/ && sudo make clean all install installcheck || (cat /dataservices-api/server/extension/test_out/regression.diffs && false)"
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
- name: Run client tests
|
- name: Run client tests
|
||||||
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "sudo createuser publicuser --no-createrole --no-createdb --no-superuser -U postgres && cd /dataservices-api/client/ && sudo make clean all install installcheck"
|
run: docker-compose -f docker-compose.yaml exec -T postgres-server bash -c "sudo createuser publicuser --no-createrole --no-createdb --no-superuser -U postgres && cd /dataservices-api/client/ && sudo make clean all install installcheck || (cat /home/ubuntu/dataservices-api/client/test_out/regression.diffs && false)"
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
@ -14,6 +14,14 @@ AWK = awk
|
|||||||
PG_CONFIG = pg_config
|
PG_CONFIG = pg_config
|
||||||
PG_PARALLEL := $(shell $(PG_CONFIG) --version | ($(AWK) '{$$2*=1000; if ($$2 >= 9600) print 1; else print 0;}' 2> /dev/null || echo 0))
|
PG_PARALLEL := $(shell $(PG_CONFIG) --version | ($(AWK) '{$$2*=1000; if ($$2 >= 9600) print 1; else print 0;}' 2> /dev/null || echo 0))
|
||||||
|
|
||||||
|
# PG12 compatibility
|
||||||
|
PG_VERSION := $(shell $(PG_CONFIG) --version | $(AWK) '{split($$2,a,"."); print a[1]}')
|
||||||
|
PG_12_GE := $(shell [ $(PG_VERSION) -ge 12 ] && echo true)
|
||||||
|
PLPYTHONU := plpythonu
|
||||||
|
ifeq ($(PG_12_GE), true)
|
||||||
|
PLPYTHONU := plpython3u
|
||||||
|
endif
|
||||||
|
|
||||||
# OLD_VERSIONS = $(wildcard old_versions/*.sql)
|
# OLD_VERSIONS = $(wildcard old_versions/*.sql)
|
||||||
# DATA = $(NEW_EXTENSION_ARTIFACT) \
|
# DATA = $(NEW_EXTENSION_ARTIFACT) \
|
||||||
# $(OLD_VERSIONS) \
|
# $(OLD_VERSIONS) \
|
||||||
@ -25,9 +33,9 @@ DATA = $(NEW_EXTENSION_ARTIFACT) \
|
|||||||
$(OLD_VERSIONS)
|
$(OLD_VERSIONS)
|
||||||
SOURCES_DATA_DIR = sql/
|
SOURCES_DATA_DIR = sql/
|
||||||
|
|
||||||
|
|
||||||
REGRESS = $(notdir $(basename $(sort $(wildcard test/sql/*test.sql))))
|
REGRESS = $(notdir $(basename $(sort $(wildcard test/sql/*test.sql))))
|
||||||
TEST_DIR = test/
|
REGRESS_EXPEC = $(notdir $(basename $(sort $(wildcard test/expected/*test.out))))
|
||||||
|
TEST_DIR = test_out
|
||||||
REGRESS_OPTS = --inputdir='$(TEST_DIR)' --outputdir='$(TEST_DIR)' --user='postgres'
|
REGRESS_OPTS = --inputdir='$(TEST_DIR)' --outputdir='$(TEST_DIR)' --user='postgres'
|
||||||
|
|
||||||
# DATA is a special variable used by postgres build infrastructure
|
# DATA is a special variable used by postgres build infrastructure
|
||||||
@ -54,7 +62,8 @@ SOURCES_DATA = $(wildcard $(SOURCES_DATA_DIR)/*.sql) $(GENERATED_SQL_FILES)
|
|||||||
|
|
||||||
$(NEW_EXTENSION_ARTIFACT): $(SOURCES_DATA)
|
$(NEW_EXTENSION_ARTIFACT): $(SOURCES_DATA)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
cat $(SOURCES_DATA_DIR)/*.sql >> $@
|
cat $(SOURCES_DATA_DIR)/*.sql | \
|
||||||
|
$(SED) -e 's/@@plpythonu@@/$(PLPYTHONU)/g' >> $@
|
||||||
ifeq ($(PG_PARALLEL), 0)
|
ifeq ($(PG_PARALLEL), 0)
|
||||||
# Remove PARALLEL in aggregates and functions
|
# Remove PARALLEL in aggregates and functions
|
||||||
$(eval TMPFILE := $(shell mktemp /tmp/$(basename $0).XXXXXXXX))
|
$(eval TMPFILE := $(shell mktemp /tmp/$(basename $0).XXXXXXXX))
|
||||||
@ -86,6 +95,7 @@ release: $(EXTENSION).control $(SOURCES_DATA)
|
|||||||
devclean:
|
devclean:
|
||||||
rm -f $(NEW_EXTENSION_ARTIFACT)
|
rm -f $(NEW_EXTENSION_ARTIFACT)
|
||||||
rm -f $(GENERATED_SQL_FILES)
|
rm -f $(GENERATED_SQL_FILES)
|
||||||
|
rm -rf $(TEST_DIR)
|
||||||
|
|
||||||
# If needed remove PARALLEL tags from the release files
|
# If needed remove PARALLEL tags from the release files
|
||||||
release_remove_parallel_deploy:
|
release_remove_parallel_deploy:
|
||||||
@ -97,9 +107,25 @@ ifeq ($(PG_PARALLEL), 0)
|
|||||||
done
|
done
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Replacing variables defined within test files
|
||||||
|
replace_variables:
|
||||||
|
mkdir -p $(TEST_DIR)
|
||||||
|
mkdir -p $(TEST_DIR)/expected
|
||||||
|
mkdir -p $(TEST_DIR)/sql
|
||||||
|
for f in $(REGRESS); do \
|
||||||
|
cat test/sql/$${f}.sql | \
|
||||||
|
sed -e 's/@@plpythonu@@/$(PLPYTHONU)/g' \
|
||||||
|
>> $(TEST_DIR)/sql/$${f}.sql; \
|
||||||
|
done
|
||||||
|
for f in $(REGRESS_EXPEC); do \
|
||||||
|
cat test/expected/$${f}.out | \
|
||||||
|
sed -e 's/@@plpythonu@@/$(PLPYTHONU)/g' \
|
||||||
|
>> $(TEST_DIR)/expected/$${f}.out; \
|
||||||
|
done
|
||||||
|
|
||||||
# Install the current release into the PostgreSQL extensions directory
|
# Install the current release into the PostgreSQL extensions directory
|
||||||
deploy: release_remove_parallel_deploy
|
deploy: release_remove_parallel_deploy
|
||||||
$(INSTALL_DATA) $(EXTENSION).control '$(DESTDIR)$(datadir)/extension/'
|
$(INSTALL_DATA) $(EXTENSION).control '$(DESTDIR)$(datadir)/extension/'
|
||||||
$(INSTALL_DATA) old_versions/*.sql *.sql '$(DESTDIR)$(datadir)/extension/'
|
$(INSTALL_DATA) old_versions/*.sql *.sql '$(DESTDIR)$(datadir)/extension/'
|
||||||
|
|
||||||
install: deploy
|
install: replace_variables deploy
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
comment = 'CartoDB dataservices client API extension'
|
comment = 'CartoDB dataservices client API extension'
|
||||||
default_version = '0.28.0'
|
default_version = '0.29.0'
|
||||||
requires = 'plproxy, cartodb'
|
requires = 'plproxy, cartodb'
|
||||||
superuser = true
|
superuser = true
|
||||||
schema = cdb_dataservices_client
|
schema = cdb_dataservices_client
|
||||||
|
@ -18,3 +18,16 @@ $func$ LANGUAGE plpgsql;
|
|||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_jsonb_array_casttext(jsonb) RETURNS text[] AS $f$
|
CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_jsonb_array_casttext(jsonb) RETURNS text[] AS $f$
|
||||||
SELECT array_agg(x) || ARRAY[]::text[] FROM jsonb_array_elements_text($1) t(x);
|
SELECT array_agg(x) || ARRAY[]::text[] FROM jsonb_array_elements_text($1) t(x);
|
||||||
$f$ LANGUAGE sql IMMUTABLE;
|
$f$ LANGUAGE sql IMMUTABLE;
|
||||||
|
|
||||||
|
|
||||||
|
-- PG12_DEPRECATED
|
||||||
|
-- Create geomval if it doesn't exist (in postgis 3+ it only exists in postgis_raster)
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'geomval') THEN
|
||||||
|
CREATE TYPE cdb_dataservices_client.geomval AS (
|
||||||
|
geom geometry,
|
||||||
|
val double precision
|
||||||
|
);
|
||||||
|
END IF;
|
||||||
|
END$$;
|
@ -138,7 +138,7 @@ CREATE OR REPLACE FUNCTION cdb_dataservices_client.__DST_PrepareTableOBS_GetMeas
|
|||||||
)
|
)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu VOLATILE PARALLEL UNSAFE;
|
$$ LANGUAGE @@plpythonu@@ VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_client.__DST_PopulateTableOBS_GetMeasure(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_client.__DST_PopulateTableOBS_GetMeasure(
|
||||||
username text,
|
username text,
|
||||||
@ -231,7 +231,7 @@ CREATE OR REPLACE FUNCTION cdb_dataservices_client.__DST_PopulateTableOBS_GetMea
|
|||||||
fdw_server=plpy.quote_literal(server_name)))
|
fdw_server=plpy.quote_literal(server_name)))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu VOLATILE PARALLEL UNSAFE;
|
$$ LANGUAGE @@plpythonu@@ VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_client._DST_ConnectUserTable(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_client._DST_ConnectUserTable(
|
||||||
username text,
|
username text,
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
-- Install dependencies
|
-- Install dependencies
|
||||||
CREATE EXTENSION postgis;
|
CREATE EXTENSION postgis;
|
||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION @@plpythonu@@;
|
||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION plproxy;
|
CREATE EXTENSION plproxy;
|
||||||
-- Install the extension
|
-- Install the extension
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
-- Install dependencies
|
-- Install dependencies
|
||||||
CREATE EXTENSION postgis;
|
CREATE EXTENSION postgis;
|
||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION @@plpythonu@@;
|
||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION plproxy;
|
CREATE EXTENSION plproxy;
|
||||||
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
# Makefile to generate the extension out of separate sql source files.
|
# Makefile to generate the extension out of separate sql source files.
|
||||||
# Once a version is released, it is not meant to be changed. E.g: once version 0.0.1 is out, it SHALL NOT be changed.
|
# Once a version is released, it is not meant to be changed. E.g: once version 0.0.1 is out, it SHALL NOT be changed.
|
||||||
EXTENSION = cdb_dataservices_server
|
EXTENSION = cdb_dataservices_server
|
||||||
EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
|
EXTVERSION = $(shell grep default_version $(EXTENSION).control.in | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
|
||||||
# The new version to be generated from templates
|
# The new version to be generated from templates
|
||||||
SED = sed
|
SED = sed
|
||||||
ERB = erb
|
ERB = erb
|
||||||
REPLACEMENTS = -i 's/$(EXTVERSION)/$(NEW_VERSION)/g'
|
|
||||||
NEW_EXTENSION_ARTIFACT = $(EXTENSION)--$(EXTVERSION).sql
|
NEW_EXTENSION_ARTIFACT = $(EXTENSION)--$(EXTVERSION).sql
|
||||||
AWK = awk
|
AWK = awk
|
||||||
|
|
||||||
@ -14,7 +13,8 @@ PG_CONFIG = pg_config
|
|||||||
PG_PARALLEL := $(shell $(PG_CONFIG) --version | ($(AWK) '{$$2*=1000; if ($$2 >= 9600) print 1; else print 0;}' 2> /dev/null || echo 0))
|
PG_PARALLEL := $(shell $(PG_CONFIG) --version | ($(AWK) '{$$2*=1000; if ($$2 >= 9600) print 1; else print 0;}' 2> /dev/null || echo 0))
|
||||||
|
|
||||||
REGRESS = $(notdir $(basename $(sort $(wildcard test/sql/*test.sql))))
|
REGRESS = $(notdir $(basename $(sort $(wildcard test/sql/*test.sql))))
|
||||||
TEST_DIR = test/
|
REGRESS_EXPEC = $(notdir $(basename $(sort $(wildcard test/expected/*test.out))))
|
||||||
|
TEST_DIR = test_out
|
||||||
REGRESS_OPTS = --inputdir='$(TEST_DIR)' --outputdir='$(TEST_DIR)' --user='postgres'
|
REGRESS_OPTS = --inputdir='$(TEST_DIR)' --outputdir='$(TEST_DIR)' --user='postgres'
|
||||||
|
|
||||||
# DATA is a special variable used by postgres build infrastructure
|
# DATA is a special variable used by postgres build infrastructure
|
||||||
@ -27,15 +27,29 @@ DATA = $(NEW_EXTENSION_ARTIFACT) \
|
|||||||
$(OLD_VERSIONS)
|
$(OLD_VERSIONS)
|
||||||
SOURCES_DATA_DIR = sql/
|
SOURCES_DATA_DIR = sql/
|
||||||
SOURCES_DATA = $(wildcard sql/*.sql)
|
SOURCES_DATA = $(wildcard sql/*.sql)
|
||||||
|
SOURCES_DATA_DIR_OUT = sql_out/
|
||||||
|
|
||||||
# postgres build stuff
|
# postgres build stuff
|
||||||
PG_CONFIG = pg_config
|
PG_CONFIG = pg_config
|
||||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||||
include $(PGXS)
|
include $(PGXS)
|
||||||
|
|
||||||
|
# PG12 compatibility
|
||||||
|
PG_VERSION := $(shell $(PG_CONFIG) --version | $(AWK) '{split($$2,a,"."); print a[1]}')
|
||||||
|
PG_12_GE := $(shell [ $(PG_VERSION) -ge 12 ] && echo true)
|
||||||
|
PLPYTHONU := plpythonu
|
||||||
|
ifeq ($(PG_12_GE), true)
|
||||||
|
PLPYTHONU := plpython3u
|
||||||
|
endif
|
||||||
|
|
||||||
|
REPLACEMENTS = -e 's/@@plpythonu@@/$(PLPYTHONU)/g'
|
||||||
|
ifneq ($(NEW_VERSION),)
|
||||||
|
REPLACEMENTS += -e 's/$(EXTVERSION)/$(NEW_VERSION)/g'
|
||||||
|
endif
|
||||||
|
|
||||||
$(NEW_EXTENSION_ARTIFACT): $(SOURCES_DATA)
|
$(NEW_EXTENSION_ARTIFACT): $(SOURCES_DATA)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
cat $(SOURCES_DATA_DIR)/*.sql >> $@
|
cat $(SOURCES_DATA_DIR_OUT)/*.sql >> $@
|
||||||
ifeq ($(PG_PARALLEL), 0)
|
ifeq ($(PG_PARALLEL), 0)
|
||||||
# Remove PARALLEL in aggregates and functions
|
# Remove PARALLEL in aggregates and functions
|
||||||
$(eval TMPFILE := $(shell mktemp /tmp/$(basename $0).XXXXXXXX))
|
$(eval TMPFILE := $(shell mktemp /tmp/$(basename $0).XXXXXXXX))
|
||||||
@ -44,16 +58,19 @@ ifeq ($(PG_PARALLEL), 0)
|
|||||||
mv $(TMPFILE) $@
|
mv $(TMPFILE) $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(EXTENSION).control: $(EXTENSION).control.in Makefile
|
||||||
|
$(SED) $(REPLACEMENTS) $< > $@
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(DATA)
|
all: replace_variables $(DATA)
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
release: $(EXTENSION).control $(SOURCES_DATA)
|
release: replace_variables $(EXTENSION).control $(SOURCES_DATA)
|
||||||
test -n "$(NEW_VERSION)" # $$NEW_VERSION VARIABLE MISSING. Eg. make release NEW_VERSION=0.x.0
|
test -n "$(NEW_VERSION)" # $$NEW_VERSION VARIABLE MISSING. Eg. make release NEW_VERSION=0.x.0
|
||||||
git mv *.sql old_versions
|
git mv *.sql old_versions
|
||||||
$(SED) $(REPLACEMENTS) $(EXTENSION).control
|
$(SED) $(REPLACEMENTS) $(EXTENSION).control.in > $(EXTENSION).control
|
||||||
git add $(EXTENSION).control
|
git add $(EXTENSION).control
|
||||||
cat $(SOURCES_DATA_DIR)/*.sql > $(EXTENSION)--$(NEW_VERSION).sql
|
cat $(SOURCES_DATA_DIR_OUT)/*.sql > $(EXTENSION)--$(NEW_VERSION).sql
|
||||||
$(ERB) version=$(NEW_VERSION) upgrade_downgrade_template.erb > $(EXTENSION)--$(EXTVERSION)--$(NEW_VERSION).sql
|
$(ERB) version=$(NEW_VERSION) upgrade_downgrade_template.erb > $(EXTENSION)--$(EXTVERSION)--$(NEW_VERSION).sql
|
||||||
$(ERB) version=$(EXTVERSION) upgrade_downgrade_template.erb > $(EXTENSION)--$(NEW_VERSION)--$(EXTVERSION).sql
|
$(ERB) version=$(EXTVERSION) upgrade_downgrade_template.erb > $(EXTENSION)--$(NEW_VERSION)--$(EXTVERSION).sql
|
||||||
git add $(EXTENSION)--$(NEW_VERSION).sql
|
git add $(EXTENSION)--$(NEW_VERSION).sql
|
||||||
@ -66,6 +83,9 @@ release: $(EXTENSION).control $(SOURCES_DATA)
|
|||||||
.PHONY: devclean
|
.PHONY: devclean
|
||||||
devclean:
|
devclean:
|
||||||
rm -f $(NEW_EXTENSION_ARTIFACT)
|
rm -f $(NEW_EXTENSION_ARTIFACT)
|
||||||
|
rm -rf $(TEST_DIR)
|
||||||
|
rm -rf $(SOURCES_DATA_DIR_OUT)
|
||||||
|
rm -rf $(EXTENSION).control
|
||||||
|
|
||||||
# If needed remove PARALLEL tags from the release files
|
# If needed remove PARALLEL tags from the release files
|
||||||
release_remove_parallel_deploy:
|
release_remove_parallel_deploy:
|
||||||
@ -82,6 +102,30 @@ deploy: release_remove_parallel_deploy
|
|||||||
$(INSTALL_DATA) $(EXTENSION).control '$(DESTDIR)$(datadir)/extension/'
|
$(INSTALL_DATA) $(EXTENSION).control '$(DESTDIR)$(datadir)/extension/'
|
||||||
$(INSTALL_DATA) old_versions/*.sql *.sql '$(DESTDIR)$(datadir)/extension/'
|
$(INSTALL_DATA) old_versions/*.sql *.sql '$(DESTDIR)$(datadir)/extension/'
|
||||||
|
|
||||||
|
# Replacing variables defined within test files
|
||||||
|
replace_variables:
|
||||||
|
# tests
|
||||||
|
mkdir -p $(TEST_DIR)
|
||||||
|
mkdir -p $(TEST_DIR)/expected
|
||||||
|
mkdir -p $(TEST_DIR)/sql
|
||||||
|
for f in $(REGRESS); do \
|
||||||
|
cat test/sql/$${f}.sql | \
|
||||||
|
sed -e 's/@@plpythonu@@/$(PLPYTHONU)/g' \
|
||||||
|
> $(TEST_DIR)/sql/$${f}.sql; \
|
||||||
|
done
|
||||||
|
for f in $(REGRESS_EXPEC); do \
|
||||||
|
cat test/expected/$${f}.out | \
|
||||||
|
sed -e 's/@@plpythonu@@/$(PLPYTHONU)/g' \
|
||||||
|
> $(TEST_DIR)/expected/$${f}.out; \
|
||||||
|
done
|
||||||
|
# data
|
||||||
|
mkdir -p $(SOURCES_DATA_DIR_OUT)
|
||||||
|
for f in $(notdir $(SOURCES_DATA)); do \
|
||||||
|
cat $(SOURCES_DATA_DIR)/$${f} | \
|
||||||
|
sed -e 's/@@plpythonu@@/$(PLPYTHONU)/g' \
|
||||||
|
> $(SOURCES_DATA_DIR_OUT)/$${f}; \
|
||||||
|
done
|
||||||
|
|
||||||
install: deploy
|
install: deploy
|
||||||
|
|
||||||
reinstall: install
|
reinstall: install
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
comment = 'CartoDB dataservices server extension'
|
comment = 'CartoDB dataservices server extension'
|
||||||
default_version = '0.37.0'
|
default_version = '0.38.0'
|
||||||
requires = 'plpythonu, plproxy, postgis, cdb_geocoder'
|
requires = '@@plpythonu@@, plproxy, postgis, cdb_geocoder'
|
||||||
superuser = true
|
superuser = true
|
||||||
schema = cdb_dataservices_server
|
schema = cdb_dataservices_server
|
11
server/extension/sql/05_postgis3_adapter.sql
Normal file
11
server/extension/sql/05_postgis3_adapter.sql
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
-- PG12_DEPRECATED
|
||||||
|
-- Create geomval if it doesn't exist (in postgis 3+ it only exists in postgis_raster)
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'geomval') THEN
|
||||||
|
CREATE TYPE cdb_dataservices_server.geomval AS (
|
||||||
|
geom geometry,
|
||||||
|
val double precision
|
||||||
|
);
|
||||||
|
END IF;
|
||||||
|
END$$;
|
@ -69,7 +69,7 @@ RETURNS cdb_dataservices_server.simple_route AS $$
|
|||||||
raise Exception('Error trying to calculate Mapbox routing')
|
raise Exception('Error trying to calculate Mapbox routing')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_route_with_waypoints(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_route_with_waypoints(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -137,7 +137,7 @@ RETURNS cdb_dataservices_server.simple_route AS $$
|
|||||||
raise Exception('Error trying to calculate TomTom routing')
|
raise Exception('Error trying to calculate TomTom routing')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_route_with_waypoints(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_route_with_waypoints(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -198,4 +198,4 @@ RETURNS cdb_dataservices_server.simple_route AS $$
|
|||||||
raise Exception('Error trying to calculate mapzen routing')
|
raise Exception('Error trying to calculate mapzen routing')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -37,7 +37,7 @@ RETURNS cdb_dataservices_server.simple_route AS $$
|
|||||||
return [result[0]['shape'],result[0]['length'], result[0]['duration']]
|
return [result[0]['shape'],result[0]['length'], result[0]['duration']]
|
||||||
else:
|
else:
|
||||||
raise Exception('Requested routing method is not available')
|
raise Exception('Requested routing method is not available')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_route_with_waypoints(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_route_with_waypoints(
|
||||||
@ -76,4 +76,4 @@ RETURNS cdb_dataservices_server.simple_route AS $$
|
|||||||
return [result[0]['shape'],result[0]['length'], result[0]['duration']]
|
return [result[0]['shape'],result[0]['length'], result[0]['duration']]
|
||||||
else:
|
else:
|
||||||
raise Exception('Requested routing method is not available')
|
raise Exception('Requested routing method is not available')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -15,4 +15,4 @@ RETURNS boolean AS $$
|
|||||||
'redis_metrics_connection': redis_metrics_connection,
|
'redis_metrics_connection': redis_metrics_connection,
|
||||||
}
|
}
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -14,7 +14,7 @@ RETURNS text AS $$
|
|||||||
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
user_obs_config = GD["user_obs_config_{0}".format(username)]
|
||||||
|
|
||||||
return user_obs_config.connection_str
|
return user_obs_config.connection_str
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetDemographicSnapshotJSON(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetDemographicSnapshotJSON(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -68,7 +68,7 @@ RETURNS json AS $$
|
|||||||
raise Exception('Error trying to obs_get_demographic_snapshot')
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetDemographicSnapshot(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetDemographicSnapshot(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -125,7 +125,7 @@ RETURNS SETOF JSON AS $$
|
|||||||
raise Exception('Error trying to obs_get_demographic_snapshot')
|
raise Exception('Error trying to obs_get_demographic_snapshot')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshotJSON(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshotJSON(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -177,7 +177,7 @@ RETURNS json AS $$
|
|||||||
raise Exception('Error trying to obs_get_segment_snapshot')
|
raise Exception('Error trying to obs_get_segment_snapshot')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshot(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshot(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -232,7 +232,7 @@ RETURNS SETOF JSON AS $$
|
|||||||
raise Exception('Error trying to OBS_GetSegmentSnapshot')
|
raise Exception('Error trying to OBS_GetSegmentSnapshot')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeasure(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeasure(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -289,7 +289,7 @@ RETURNS NUMERIC AS $$
|
|||||||
raise Exception('Error trying to OBS_GetMeasure')
|
raise Exception('Error trying to OBS_GetMeasure')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetCategory(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetCategory(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -344,7 +344,7 @@ RETURNS TEXT AS $$
|
|||||||
raise Exception('Error trying to OBS_GetCategory')
|
raise Exception('Error trying to OBS_GetCategory')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetUSCensusMeasure(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetUSCensusMeasure(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -401,7 +401,7 @@ RETURNS NUMERIC AS $$
|
|||||||
raise Exception('Error trying to OBS_GetUSCensusMeasure')
|
raise Exception('Error trying to OBS_GetUSCensusMeasure')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetUSCensusCategory(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetUSCensusCategory(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -456,7 +456,7 @@ RETURNS TEXT AS $$
|
|||||||
raise Exception('Error trying to OBS_GetUSCensusCategory')
|
raise Exception('Error trying to OBS_GetUSCensusCategory')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPopulation(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPopulation(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -511,7 +511,7 @@ RETURNS NUMERIC AS $$
|
|||||||
raise Exception('Error trying to OBS_GetPopulation')
|
raise Exception('Error trying to OBS_GetPopulation')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeasureById(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeasureById(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -566,7 +566,7 @@ RETURNS NUMERIC AS $$
|
|||||||
raise Exception('Error trying to OBS_GetMeasureById')
|
raise Exception('Error trying to OBS_GetMeasureById')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetData(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetData(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -627,7 +627,7 @@ RETURNS TABLE (
|
|||||||
raise Exception('Error trying to OBS_GetData')
|
raise Exception('Error trying to OBS_GetData')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use(len(geomvals))
|
quota_service.increment_total_service_use(len(geomvals))
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetData(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetData(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -688,7 +688,7 @@ RETURNS TABLE (
|
|||||||
raise Exception('Error trying to OBS_GetData')
|
raise Exception('Error trying to OBS_GetData')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use(len(geomrefs))
|
quota_service.increment_total_service_use(len(geomrefs))
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeta(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetMeta(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -736,7 +736,7 @@ RETURNS JSON AS $$
|
|||||||
import sys
|
import sys
|
||||||
logger.error('Error trying to OBS_GetMeta', sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error('Error trying to OBS_GetMeta', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
raise Exception('Error trying to OBS_GetMeta')
|
raise Exception('Error trying to OBS_GetMeta')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_MetadataValidation(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_MetadataValidation(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -782,4 +782,4 @@ RETURNS TABLE(valid boolean, errors text[]) AS $$
|
|||||||
import sys
|
import sys
|
||||||
logger.error('Error trying to OBS_MetadataValidation', sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error('Error trying to OBS_MetadataValidation', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
raise Exception('Error trying to OBS_MetadataValidation')
|
raise Exception('Error trying to OBS_MetadataValidation')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -55,7 +55,7 @@ RETURNS TABLE(id text, description text, name text, aggregate text, source text)
|
|||||||
raise Exception('Error trying to OBS_Search')
|
raise Exception('Error trying to OBS_Search')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetAvailableBoundaries(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetAvailableBoundaries(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -113,4 +113,4 @@ RETURNS TABLE(boundary_id text, description text, time_span text, tablename text
|
|||||||
raise Exception('Error trying to OBS_GetMeasureById')
|
raise Exception('Error trying to OBS_GetMeasureById')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -49,7 +49,7 @@ RETURNS geometry(Geometry, 4326) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetBoundary')
|
raise Exception('Error trying to OBS_GetBoundary')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundaryId(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundaryId(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -102,7 +102,7 @@ RETURNS TEXT AS $$
|
|||||||
raise Exception('Error trying to OBS_GetBoundaryId')
|
raise Exception('Error trying to OBS_GetBoundaryId')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundaryById(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundaryById(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -155,7 +155,7 @@ RETURNS geometry(Geometry, 4326) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetBoundaryById')
|
raise Exception('Error trying to OBS_GetBoundaryById')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundariesByGeometry(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundariesByGeometry(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -215,7 +215,7 @@ RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetBoundariesByGeometry')
|
raise Exception('Error trying to OBS_GetBoundariesByGeometry')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundariesByPointAndRadius(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetBoundariesByPointAndRadius(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -277,7 +277,7 @@ RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetBoundariesByPointAndRadius')
|
raise Exception('Error trying to OBS_GetBoundariesByPointAndRadius')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPointsByGeometry(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPointsByGeometry(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -337,7 +337,7 @@ RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetPointsByGeometry')
|
raise Exception('Error trying to OBS_GetPointsByGeometry')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPointsByPointAndRadius(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetPointsByPointAndRadius(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -399,4 +399,4 @@ RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
|
|||||||
raise Exception('Error trying to OBS_GetPointsByPointAndRadius')
|
raise Exception('Error trying to OBS_GetPointsByPointAndRadius')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -8,7 +8,7 @@ RETURNS cdb_dataservices_server.ds_fdw_metadata AS $$
|
|||||||
return plpy.execute("SELECT * FROM cdb_dataservices_server.__DST_ConnectUserTable({username}::text, {orgname}::text, {user_db_role}::text, {schema}::text, {dbname}::text, {host_addr}::text, {table_name}::text)"
|
return plpy.execute("SELECT * FROM cdb_dataservices_server.__DST_ConnectUserTable({username}::text, {orgname}::text, {user_db_role}::text, {schema}::text, {dbname}::text, {host_addr}::text, {table_name}::text)"
|
||||||
.format(username=plpy.quote_nullable(username), orgname=plpy.quote_nullable(orgname), user_db_role=plpy.quote_literal(user_db_role), schema=plpy.quote_literal(input_schema), dbname=plpy.quote_literal(dbname), table_name=plpy.quote_literal(table_name), host_addr=plpy.quote_literal(host_addr))
|
.format(username=plpy.quote_nullable(username), orgname=plpy.quote_nullable(orgname), user_db_role=plpy.quote_literal(user_db_role), schema=plpy.quote_literal(input_schema), dbname=plpy.quote_literal(dbname), table_name=plpy.quote_literal(table_name), host_addr=plpy.quote_literal(host_addr))
|
||||||
)[0]
|
)[0]
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.__DST_ConnectUserTable(username text, orgname text, user_db_role text, input_schema text, dbname text, host_addr text, table_name text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.__DST_ConnectUserTable(username text, orgname text, user_db_role text, input_schema text, dbname text, host_addr text, table_name text)
|
||||||
RETURNS cdb_dataservices_server.ds_fdw_metadata AS $$
|
RETURNS cdb_dataservices_server.ds_fdw_metadata AS $$
|
||||||
|
@ -8,7 +8,7 @@ RETURNS boolean AS $$
|
|||||||
logger_config = LoggerConfig(plpy)
|
logger_config = LoggerConfig(plpy)
|
||||||
GD[cache_key] = logger_config
|
GD[cache_key] = logger_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- This is done in order to avoid an undesired depedency on cartodb extension
|
-- This is done in order to avoid an undesired depedency on cartodb extension
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_conf_getconf(input_key text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_conf_getconf(input_key text)
|
||||||
@ -46,7 +46,7 @@ RETURNS boolean AS $$
|
|||||||
geocoder_config = GeocoderConfig(redis_conn, plpy, username, orgname, provider)
|
geocoder_config = GeocoderConfig(redis_conn, plpy, username, orgname, provider)
|
||||||
GD[cache_key] = geocoder_config
|
GD[cache_key] = geocoder_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_internal_geocoder_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_internal_geocoder_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
@ -60,7 +60,7 @@ RETURNS boolean AS $$
|
|||||||
geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname)
|
geocoder_config = InternalGeocoderConfig(redis_conn, plpy, username, orgname)
|
||||||
GD[cache_key] = geocoder_config
|
GD[cache_key] = geocoder_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_isolines_routing_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_isolines_routing_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
@ -74,7 +74,7 @@ RETURNS boolean AS $$
|
|||||||
isolines_routing_config = IsolinesRoutingConfig(redis_conn, plpy, username, orgname)
|
isolines_routing_config = IsolinesRoutingConfig(redis_conn, plpy, username, orgname)
|
||||||
GD[cache_key] = isolines_routing_config
|
GD[cache_key] = isolines_routing_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_routing_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_routing_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
@ -88,7 +88,7 @@ RETURNS boolean AS $$
|
|||||||
routing_config = RoutingConfig(redis_conn, plpy, username, orgname)
|
routing_config = RoutingConfig(redis_conn, plpy, username, orgname)
|
||||||
GD[cache_key] = routing_config
|
GD[cache_key] = routing_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._get_obs_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
@ -102,4 +102,4 @@ RETURNS boolean AS $$
|
|||||||
obs_config = ObservatoryConfig(redis_conn, plpy, username, orgname)
|
obs_config = ObservatoryConfig(redis_conn, plpy, username, orgname)
|
||||||
GD[cache_key] = obs_config
|
GD[cache_key] = obs_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -106,7 +106,7 @@ RETURNS SETOF cdb_dataservices_server.service_quota_info AS $$
|
|||||||
ret += [[service, monthly_quota, used_quota, soft_limit, provider]]
|
ret += [[service, monthly_quota, used_quota, soft_limit, provider]]
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_quota_info_batch(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_quota_info_batch(
|
||||||
@ -136,7 +136,7 @@ RETURNS SETOF cdb_dataservices_server.service_quota_info_batch AS $$
|
|||||||
ret += [[info['service'], info['monthly_quota'], info['used_quota'], info['soft_limit'], info['provider'], info['max_batch_size']]]
|
ret += [[info['service'], info['monthly_quota'], info['used_quota'], info['soft_limit'], info['provider'], info['max_batch_size']]]
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_enough_quota(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_enough_quota(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
|
@ -36,7 +36,7 @@ RETURNS Geometry AS $$
|
|||||||
else:
|
else:
|
||||||
raise Exception('Requested geocoder is not available')
|
raise Exception('Requested geocoder is not available')
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
@ -52,7 +52,7 @@ RETURNS Geometry AS $$
|
|||||||
else:
|
else:
|
||||||
raise Exception('Here geocoder is not available for your account.')
|
raise Exception('Here geocoder is not available for your account.')
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_google_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_google_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -67,7 +67,7 @@ RETURNS Geometry AS $$
|
|||||||
else:
|
else:
|
||||||
raise Exception('Google geocoder is not available for your account.')
|
raise Exception('Google geocoder is not available for your account.')
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -80,7 +80,7 @@ RETURNS Geometry AS $$
|
|||||||
mapzen_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapzen_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
mapzen_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapzen_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
||||||
return plpy.execute(mapzen_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
return plpy.execute(mapzen_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -93,7 +93,7 @@ RETURNS Geometry AS $$
|
|||||||
mapbox_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapbox_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
mapbox_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapbox_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
||||||
return plpy.execute(mapbox_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
return plpy.execute(mapbox_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -106,7 +106,7 @@ RETURNS Geometry AS $$
|
|||||||
tomtom_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_tomtom_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
tomtom_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_tomtom_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
||||||
return plpy.execute(tomtom_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
return plpy.execute(tomtom_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocodio_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocodio_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -119,7 +119,7 @@ RETURNS Geometry AS $$
|
|||||||
geocodio_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_geocodio_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
geocodio_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_geocodio_geocode_street_point($1, $2, $3, $4, $5, $6) as point; ", ["text", "text", "text", "text", "text", "text"])
|
||||||
return plpy.execute(geocodio_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
return plpy.execute(geocodio_plan, [username, orgname, searchtext, city, state_province, country], 1)[0]['point']
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_here_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_here_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -152,7 +152,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using here maps')
|
raise Exception('Error trying to geocode street point using here maps')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_google_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_google_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -184,7 +184,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using google maps')
|
raise Exception('Error trying to geocode street point using google maps')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -225,7 +225,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using mapzen')
|
raise Exception('Error trying to geocode street point using mapzen')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -271,7 +271,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using Mapbox')
|
raise Exception('Error trying to geocode street point using Mapbox')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -317,7 +317,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using TomTom')
|
raise Exception('Error trying to geocode street point using TomTom')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_geocodio_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_geocodio_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -363,4 +363,4 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode street point using Geocodio')
|
raise Exception('Error trying to geocode street point using Geocodio')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -16,7 +16,7 @@ RETURNS JSON AS $$
|
|||||||
return json.dumps({'limit': rate_limit_config.limit, 'period': rate_limit_config.period})
|
return json.dumps({'limit': rate_limit_config.limit, 'period': rate_limit_config.period})
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_user_rate_limit(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_user_rate_limit(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -40,7 +40,7 @@ RETURNS VOID AS $$
|
|||||||
period = None
|
period = None
|
||||||
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
||||||
config_setter.set_user_rate_limits(config)
|
config_setter.set_user_rate_limits(config)
|
||||||
$$ LANGUAGE plpythonu VOLATILE PARALLEL UNSAFE;
|
$$ LANGUAGE @@plpythonu@@ VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_org_rate_limit(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_org_rate_limit(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -64,7 +64,7 @@ RETURNS VOID AS $$
|
|||||||
period = None
|
period = None
|
||||||
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
||||||
config_setter.set_org_rate_limits(config)
|
config_setter.set_org_rate_limits(config)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_server_rate_limit(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_set_server_rate_limit(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -88,4 +88,4 @@ RETURNS VOID AS $$
|
|||||||
period = None
|
period = None
|
||||||
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
config = RateLimitsConfig(service=service, username=username, limit=limit, period=period)
|
||||||
config_setter.set_server_rate_limits(config)
|
config_setter.set_server_rate_limits(config)
|
||||||
$$ LANGUAGE plpythonu VOLATILE PARALLEL UNSAFE;
|
$$ LANGUAGE @@plpythonu@@ VOLATILE PARALLEL UNSAFE;
|
||||||
|
@ -40,7 +40,7 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
plan = plpy.prepare("SELECT * FROM cdb_dataservices_server.{}($1, $2, $3); ".format(provider_function), ["text", "text", "jsonb"])
|
plan = plpy.prepare("SELECT * FROM cdb_dataservices_server.{}($1, $2, $3); ".format(provider_function), ["text", "text", "jsonb"])
|
||||||
return plpy.execute(plan, [username, orgname, searches])
|
return plpy.execute(plan, [username, orgname, searches])
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_google_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_google_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
||||||
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
||||||
@ -51,7 +51,7 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
service_manager = LegacyServiceManager('geocoder', username, orgname, GD)
|
service_manager = LegacyServiceManager('geocoder', username, orgname, GD)
|
||||||
geocoder = GoogleMapsBulkGeocoder(service_manager.config.google_client_id, service_manager.config.google_api_key, service_manager.logger)
|
geocoder = GoogleMapsBulkGeocoder(service_manager.config.google_client_id, service_manager.config.google_api_key, service_manager.logger)
|
||||||
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_heremaps_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_heremaps_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
||||||
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
||||||
@ -62,7 +62,7 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
service_manager = LegacyServiceManager('geocoder', username, orgname, GD)
|
service_manager = LegacyServiceManager('geocoder', username, orgname, GD)
|
||||||
geocoder = HereMapsBulkGeocoder(service_manager.config.heremaps_app_id, service_manager.config.heremaps_app_code, service_manager.logger, service_manager.config.heremaps_service_params)
|
geocoder = HereMapsBulkGeocoder(service_manager.config.heremaps_app_id, service_manager.config.heremaps_app_code, service_manager.logger, service_manager.config.heremaps_service_params)
|
||||||
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_tomtom_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_tomtom_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
||||||
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
||||||
@ -79,7 +79,7 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
service_manager = ServiceManager('geocoder', TomTomGeocoderConfigBuilder, username, orgname, GD)
|
service_manager = ServiceManager('geocoder', TomTomGeocoderConfigBuilder, username, orgname, GD)
|
||||||
geocoder = TomTomBulkGeocoder(service_manager.config.tomtom_api_key, service_manager.logger, service_manager.config.service_params)
|
geocoder = TomTomBulkGeocoder(service_manager.config.tomtom_api_key, service_manager.logger, service_manager.config.service_params)
|
||||||
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_mapbox_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_mapbox_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
||||||
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
||||||
@ -96,7 +96,7 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
service_manager = ServiceManager('geocoder', MapboxGeocoderConfigBuilder, username, orgname, GD)
|
service_manager = ServiceManager('geocoder', MapboxGeocoderConfigBuilder, username, orgname, GD)
|
||||||
geocoder = MapboxBulkGeocoder(service_manager.config.mapbox_api_key, service_manager.logger, service_manager.config.service_params)
|
geocoder = MapboxBulkGeocoder(service_manager.config.mapbox_api_key, service_manager.logger, service_manager.config.service_params)
|
||||||
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_geocodio_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_bulk_geocodio_geocode_street_point(username TEXT, orgname TEXT, searches jsonb)
|
||||||
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
||||||
@ -113,4 +113,4 @@ RETURNS SETOF cdb_dataservices_server.geocoding AS $$
|
|||||||
service_manager = ServiceManager('geocoder', GeocodioGeocoderConfigBuilder, username, orgname, GD)
|
service_manager = ServiceManager('geocoder', GeocodioGeocoderConfigBuilder, username, orgname, GD)
|
||||||
geocoder = GeocodioBulkGeocoder(service_manager.config.geocodio_api_key, service_manager.logger, service_manager.config.service_params)
|
geocoder = GeocodioBulkGeocoder(service_manager.config.geocodio_api_key, service_manager.logger, service_manager.config.service_params)
|
||||||
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
return run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, orgname, searches)
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -35,7 +35,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode admin0 polygon')
|
raise Exception('Error trying to geocode admin0 polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -36,7 +36,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode admin1 polygon')
|
raise Exception('Error trying to geocode admin1 polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
---- cdb_geocode_admin1_polygon(admin1_name text, country_name text)
|
---- cdb_geocode_admin1_polygon(admin1_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text)
|
||||||
@ -74,7 +74,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode admin1 polygon')
|
raise Exception('Error trying to geocode admin1 polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---- cdb_geocode_namedplace_point(city_name text)
|
---- cdb_geocode_namedplace_point(city_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
import spiexceptions
|
from plpy import spiexceptions
|
||||||
from cartodb_services.tools import Logger,LoggerConfig
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
@ -16,12 +16,12 @@ RETURNS Geometry AS $$
|
|||||||
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3) as point;", ["text", "text", "text"])
|
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3) as point;", ["text", "text", "text"])
|
||||||
return plpy.execute(internal_plan, [username, orgname, city_name])[0]['point']
|
return plpy.execute(internal_plan, [username, orgname, city_name])[0]['point']
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
---- cdb_geocode_namedplace_point(city_name text, country_name text)
|
---- cdb_geocode_namedplace_point(city_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
import spiexceptions
|
from plpy import spiexceptions
|
||||||
from cartodb_services.tools import Logger,LoggerConfig
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
@ -36,12 +36,12 @@ RETURNS Geometry AS $$
|
|||||||
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3, NULL, $4) as point;", ["text", "text", "text", "text"])
|
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3, NULL, $4) as point;", ["text", "text", "text", "text"])
|
||||||
return plpy.execute(internal_plan, [username, orgname, city_name, country_name])[0]['point']
|
return plpy.execute(internal_plan, [username, orgname, city_name, country_name])[0]['point']
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)
|
---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
import spiexceptions
|
from plpy import spiexceptions
|
||||||
from cartodb_services.tools import Logger,LoggerConfig
|
from cartodb_services.tools import Logger,LoggerConfig
|
||||||
|
|
||||||
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
plpy.execute("SELECT cdb_dataservices_server._get_logger_config()")
|
||||||
@ -56,7 +56,7 @@ RETURNS Geometry AS $$
|
|||||||
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error('Error geocoding namedplace using geocode street point, falling back to internal geocoder', sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3, $4, $5) as point;", ["text", "text", "text", "text", "text"])
|
internal_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_internal_geocode_namedplace($1, $2, $3, $4, $5) as point;", ["text", "text", "text", "text", "text"])
|
||||||
return plpy.execute(internal_plan, [username, orgname, city_name, admin1_name, country_name])[0]['point']
|
return plpy.execute(internal_plan, [username, orgname, city_name, admin1_name, country_name])[0]['point']
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_internal_geocode_namedplace(username text, orgname text, city_name text, admin1_name text DEFAULT NULL, country_name text DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_internal_geocode_namedplace(username text, orgname text, city_name text, admin1_name text DEFAULT NULL, country_name text DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -101,7 +101,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode namedplace point')
|
raise Exception('Error trying to geocode namedplace point')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode postal code point')
|
raise Exception('Error trying to geocode postal code point')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_point(username text, orgname text, code double precision)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_point(username text, orgname text, code double precision)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -77,7 +77,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode postal code point')
|
raise Exception('Error trying to geocode postal code point')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_point(username text, orgname text, code double precision, country text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_point(username text, orgname text, code double precision, country text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -119,7 +119,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode postal code polygon')
|
raise Exception('Error trying to geocode postal code polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_polygon(username text, orgname text, code double precision)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_polygon(username text, orgname text, code double precision)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
@ -162,7 +162,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode postal code polygon')
|
raise Exception('Error trying to geocode postal code polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_polygon(username text, orgname text, code double precision, country text)
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_postalcode_polygon(username text, orgname text, code double precision, country text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
|
@ -35,7 +35,7 @@ RETURNS Geometry AS $$
|
|||||||
raise Exception('Error trying to geocode postal code polygon')
|
raise Exception('Error trying to geocode postal code polygon')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get mapzen isolines')
|
raise Exception('Error trying to get mapzen isolines')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_isodistance(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_isodistance(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -121,7 +121,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get mapzen isolines')
|
raise Exception('Error trying to get mapzen isolines')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_isodistance(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_isodistance(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -185,7 +185,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get Mapbox isolines')
|
raise Exception('Error trying to get Mapbox isolines')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_isodistance(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_isodistance(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -249,7 +249,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get TomTom isolines')
|
raise Exception('Error trying to get TomTom isolines')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_isochrones(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapzen_isochrones(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -310,7 +310,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get mapzen isochrones')
|
raise Exception('Error trying to get mapzen isochrones')
|
||||||
finally:
|
finally:
|
||||||
quota_service.increment_total_service_use()
|
quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_isochrones(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_mapbox_isochrones(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -368,7 +368,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get Mapbox isochrones')
|
raise Exception('Error trying to get Mapbox isochrones')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_isochrones(
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server._cdb_tomtom_isochrones(
|
||||||
username TEXT,
|
username TEXT,
|
||||||
@ -426,4 +426,4 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
raise Exception('Error trying to get TomTom isochrones')
|
raise Exception('Error trying to get TomTom isochrones')
|
||||||
finally:
|
finally:
|
||||||
service_manager.quota_service.increment_total_service_use()
|
service_manager.quota_service.increment_total_service_use()
|
||||||
$$ LANGUAGE plpythonu SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ SECURITY DEFINER STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -31,7 +31,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
return plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
return plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
||||||
else:
|
else:
|
||||||
raise Exception('Requested isolines provider is not available')
|
raise Exception('Requested isolines provider is not available')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- heremaps isodistance
|
-- heremaps isodistance
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -46,7 +46,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
result = plpy.execute(here_plan, [username, orgname, type, source, mode, range, options])
|
result = plpy.execute(here_plan, [username, orgname, type, source, mode, range, options])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- mapzen isodistance
|
-- mapzen isodistance
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -60,7 +60,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
result = plpy.execute(mapzen_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(mapzen_plan, [username, orgname, source, mode, range, options])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- mapbox isodistance
|
-- mapbox isodistance
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -74,7 +74,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
result = plpy.execute(mapbox_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(mapbox_plan, [username, orgname, source, mode, range, options])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- tomtom isodistance
|
-- tomtom isodistance
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_isodistance(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -88,4 +88,4 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
result = plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -31,7 +31,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
return plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
return plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
||||||
else:
|
else:
|
||||||
raise Exception('Requested isolines provider is not available')
|
raise Exception('Requested isolines provider is not available')
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- heremaps isochrone
|
-- heremaps isochrone
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_here_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -46,7 +46,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
result = plpy.execute(here_plan, [username, orgname, type, source, mode, range, options])
|
result = plpy.execute(here_plan, [username, orgname, type, source, mode, range, options])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- mapzen isochrone
|
-- mapzen isochrone
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapzen_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -59,7 +59,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
mapzen_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapzen_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
mapzen_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapzen_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
||||||
result = plpy.execute(mapzen_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(mapzen_plan, [username, orgname, source, mode, range, options])
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- mapbox isochrone
|
-- mapbox isochrone
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_mapbox_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -72,7 +72,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
mapbox_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapbox_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
mapbox_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapbox_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
||||||
result = plpy.execute(mapbox_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(mapbox_plan, [username, orgname, source, mode, range, options])
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
|
||||||
-- tomtom isochrone
|
-- tomtom isochrone
|
||||||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_tomtom_isochrone(username TEXT, orgname TEXT, source geometry(Geometry, 4326), mode TEXT, range integer[], options text[] DEFAULT array[]::text[])
|
||||||
@ -85,4 +85,4 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
tomtom_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_tomtom_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
tomtom_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_tomtom_isochrones($1, $2, $3, $4, $5, $6) as isoline; ", ["text", "text", "geometry(geometry, 4326)", "text", "integer[]", "text[]"])
|
||||||
result = plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
result = plpy.execute(tomtom_plan, [username, orgname, source, mode, range, options])
|
||||||
return result
|
return result
|
||||||
$$ LANGUAGE plpythonu STABLE PARALLEL RESTRICTED;
|
$$ LANGUAGE @@plpythonu@@ STABLE PARALLEL RESTRICTED;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
-- Install dependencies
|
-- Install dependencies
|
||||||
CREATE EXTENSION postgis;
|
CREATE EXTENSION postgis;
|
||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION @@plpythonu@@;
|
||||||
CREATE EXTENSION plproxy;
|
CREATE EXTENSION plproxy;
|
||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION cdb_geocoder;
|
CREATE EXTENSION cdb_geocoder;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
\set ECHO none
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
SET client_min_messages TO WARNING;
|
SET client_min_messages TO WARNING;
|
||||||
-- Install dependencies
|
-- Install dependencies
|
||||||
CREATE EXTENSION postgis;
|
CREATE EXTENSION postgis;
|
||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION @@plpythonu@@;
|
||||||
CREATE EXTENSION plproxy;
|
CREATE EXTENSION plproxy;
|
||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION cdb_geocoder;
|
CREATE EXTENSION cdb_geocoder;
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
\set ECHO none
|
||||||
|
-- add the schema cdb_dataservices_server to the SEARCH_PATH
|
||||||
|
DO $$ BEGIN
|
||||||
|
PERFORM set_config('search_path', current_setting('search_path')||', cdb_dataservices_server', false);
|
||||||
|
END $$;
|
||||||
|
\set ECHO all
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
|
@ -2,6 +2,11 @@
|
|||||||
\set VERBOSITY verbose
|
\set VERBOSITY verbose
|
||||||
SET client_min_messages TO error;
|
SET client_min_messages TO error;
|
||||||
|
|
||||||
|
-- add the schema cdb_dataservices_server to the SEARCH_PATH
|
||||||
|
DO $$ BEGIN
|
||||||
|
PERFORM set_config('search_path', current_setting('search_path')||', cdb_dataservices_server', false);
|
||||||
|
END $$;
|
||||||
|
|
||||||
-- Set configuration for a user 'foo'
|
-- Set configuration for a user 'foo'
|
||||||
DO $$
|
DO $$
|
||||||
import json
|
import json
|
||||||
@ -14,7 +19,7 @@ DO $$
|
|||||||
service_config.user.set('soft_obs_general_limit', True)
|
service_config.user.set('soft_obs_general_limit', True)
|
||||||
service_config.user.set('period_end_date', '20170516')
|
service_config.user.set('period_end_date', '20170516')
|
||||||
|
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE @@plpythonu@@;
|
||||||
|
|
||||||
|
|
||||||
-- Mock Observatory backend function
|
-- Mock Observatory backend function
|
||||||
@ -37,7 +42,7 @@ GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_observatory TO geocoder_api;
|
|||||||
SELECT * FROM cdb_dataservices_server.OBS_GetData(
|
SELECT * FROM cdb_dataservices_server.OBS_GetData(
|
||||||
'foo',
|
'foo',
|
||||||
NULL,
|
NULL,
|
||||||
'{"(0103000020E61000000100000005000000010000E0F67F52C096D88AE6B25F4440010000E0238052C0BF6D8A1A8D5D4440010000D0DA7E52C05F03F3CC265D444001000020F47E52C0F2DD78AB5D5F4440010000E0F67F52C096D88AE6B25F4440,1)"}'::public._geomval,
|
'{"(0103000020E61000000100000005000000010000E0F67F52C096D88AE6B25F4440010000E0238052C0BF6D8A1A8D5D4440010000D0DA7E52C05F03F3CC265D444001000020F47E52C0F2DD78AB5D5F4440010000E0F67F52C096D88AE6B25F4440,1)"}'::_geomval,
|
||||||
'[{"id": 1, "score": 52.7515548093083898758340051256007949661290516400338, "geom_id": "us.census.tiger.census_tract", "denom_id": "us.census.acs.B01003001", "numer_id": "us.census.acs.B03002003", "geom_name": "US Census Tracts", "geom_type": "Geometry", "num_geoms": 2.86483076549783307739486952736, "denom_name": "Total Population", "denom_type": "Numeric", "numer_name": "White Population", "numer_type": "Numeric", "score_rank": 1, "target_area": 0.000307374806576033, "geom_colname": "the_geom", "score_rownum": 1, "target_geoms": null, "denom_colname": "total_pop", "denom_reltype": '
|
'[{"id": 1, "score": 52.7515548093083898758340051256007949661290516400338, "geom_id": "us.census.tiger.census_tract", "denom_id": "us.census.acs.B01003001", "numer_id": "us.census.acs.B03002003", "geom_name": "US Census Tracts", "geom_type": "Geometry", "num_geoms": 2.86483076549783307739486952736, "denom_name": "Total Population", "denom_type": "Numeric", "numer_name": "White Population", "numer_type": "Numeric", "score_rank": 1, "target_area": 0.000307374806576033, "geom_colname": "the_geom", "score_rownum": 1, "target_geoms": null, "denom_colname": "total_pop", "denom_reltype": '
|
||||||
'"denominator", "geom_timespan": "2015", "normalization": "prenormalized", "numer_colname": "white_pop", "timespan_rank": 1, "geom_tablename": "obs_87a814e485deabe3b12545a537f693d16ca702c2", "max_score_rank": null, "numer_timespan": "2010 - 2014", "suggested_name": "white_pop_2010_2014", "denom_aggregate": "sum", "denom_tablename": "obs_b393b5b88c6adda634b2071a8005b03c551b609a", "numer_aggregate": "sum", "numer_tablename": "obs_b393b5b88c6adda634b2071a8005b03c551b609a", "timespan_rownum": 1, "geom_description": "Census tracts are small, relatively permanent statistical subdivisions of a county or equivalent entity that are updated by local participants prior to each decennial census as part of the Census Bureau’s Participant Statistical Areas Program. The Census Bureau delineates census tracts in situations where no local participant existed or where state, local, or tribal governments'
|
'"denominator", "geom_timespan": "2015", "normalization": "prenormalized", "numer_colname": "white_pop", "timespan_rank": 1, "geom_tablename": "obs_87a814e485deabe3b12545a537f693d16ca702c2", "max_score_rank": null, "numer_timespan": "2010 - 2014", "suggested_name": "white_pop_2010_2014", "denom_aggregate": "sum", "denom_tablename": "obs_b393b5b88c6adda634b2071a8005b03c551b609a", "numer_aggregate": "sum", "numer_tablename": "obs_b393b5b88c6adda634b2071a8005b03c551b609a", "timespan_rownum": 1, "geom_description": "Census tracts are small, relatively permanent statistical subdivisions of a county or equivalent entity that are updated by local participants prior to each decennial census as part of the Census Bureau’s Participant Statistical Areas Program. The Census Bureau delineates census tracts in situations where no local participant existed or where state, local, or tribal governments'
|
||||||
'declined to participate. The primary purpose of census tracts is to provide a stable set of geographic units for the presentation of statistical data.\r\n\r\nCensus tracts generally have a population size between 1,200 and 8,000 people, with an optimum size of 4,000 people. A census tract usually covers a contiguous area; however, the spatial size of census tracts varies widely depending on the density of settlement. Census tract boundaries are delineated with the intention of being maintained over a long time so that statistical comparisons can be made from census to census. Census tracts occasionally are split due to population growth or merged as a result of substantial population decline.\r\n\r\nCensus tract boundaries generally follow visible and identifiable features. They may follow nonvisible legal boundaries, such as minor civil division (MCD) or incorporated place boundaries'
|
'declined to participate. The primary purpose of census tracts is to provide a stable set of geographic units for the presentation of statistical data.\r\n\r\nCensus tracts generally have a population size between 1,200 and 8,000 people, with an optimum size of 4,000 people. A census tract usually covers a contiguous area; however, the spatial size of census tracts varies widely depending on the density of settlement. Census tract boundaries are delineated with the intention of being maintained over a long time so that statistical comparisons can be made from census to census. Census tracts occasionally are split due to population growth or merged as a result of substantial population decline.\r\n\r\nCensus tract boundaries generally follow visible and identifiable features. They may follow nonvisible legal boundaries, such as minor civil division (MCD) or incorporated place boundaries'
|
||||||
|
@ -34,4 +34,4 @@ def _reset():
|
|||||||
plpy = None
|
plpy = None
|
||||||
GD = None
|
GD = None
|
||||||
|
|
||||||
from geocoder import run_street_point_geocoder, StreetPointBulkGeocoder
|
from cartodb_services.geocoder import run_street_point_geocoder, StreetPointBulkGeocoder
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from google import GoogleMapsBulkGeocoder
|
from cartodb_services.google import GoogleMapsBulkGeocoder
|
||||||
from here import HereMapsBulkGeocoder
|
from cartodb_services.here import HereMapsBulkGeocoder
|
||||||
from tomtom import TomTomBulkGeocoder
|
from cartodb_services.tomtom import TomTomBulkGeocoder
|
||||||
from mapbox import MapboxBulkGeocoder
|
from cartodb_services.mapbox import MapboxBulkGeocoder
|
||||||
from geocodio import GeocodioBulkGeocoder
|
from cartodb_services.geocodio import GeocodioBulkGeocoder
|
||||||
|
|
||||||
BATCH_GEOCODER_CLASS_BY_PROVIDER = {
|
BATCH_GEOCODER_CLASS_BY_PROVIDER = {
|
||||||
'google': GoogleMapsBulkGeocoder,
|
'google': GoogleMapsBulkGeocoder,
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
from service_configuration import ServiceConfiguration
|
from .service_configuration import ServiceConfiguration
|
||||||
from rate_limits import RateLimitsConfig, RateLimitsConfigBuilder, RateLimitsConfigSetter
|
from .rate_limits import RateLimitsConfig, RateLimitsConfigBuilder, RateLimitsConfigSetter
|
||||||
from legacy_rate_limits import RateLimitsConfigLegacyBuilder
|
from .legacy_rate_limits import RateLimitsConfigLegacyBuilder
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
from rate_limits import RateLimitsConfig
|
from cartodb_services.config.rate_limits import RateLimitsConfig
|
||||||
|
|
||||||
class RateLimitsConfigLegacyBuilder(object):
|
class RateLimitsConfigLegacyBuilder(object):
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from service_configuration import ServiceConfiguration
|
from cartodb_services.config.service_configuration import ServiceConfiguration
|
||||||
|
|
||||||
class RateLimitsConfig(object):
|
class RateLimitsConfig(object):
|
||||||
"""
|
"""
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/local/bin/python
|
#!/usr/local/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from tools import QuotaExceededException, Logger
|
from cartodb_services.tools import QuotaExceededException, Logger
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ def run_street_point_geocoder(plpy, GD, geocoder, service_manager, username, org
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
import sys
|
import sys
|
||||||
logger.error("Error processing geocode", sys.exc_info(), data={"username": username, "orgname": orgname})
|
logger.error("Error processing geocode", sys.exc_info(), data={"username": username, "orgname": orgname})
|
||||||
metadata['processing_error'] = 'Error: {}'.format(e.message)
|
metadata['processing_error'] = 'Error: {}'.format(e)
|
||||||
results.append([result[0], None, json.dumps(metadata)])
|
results.append([result[0], None, json.dumps(metadata)])
|
||||||
failed_count += 1
|
failed_count += 1
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
from geocoder import GeocodioGeocoder
|
from cartodb_services.geocodio.geocoder import GeocodioGeocoder
|
||||||
from bulk_geocoder import GeocodioBulkGeocoder
|
from cartodb_services.geocodio.bulk_geocoder import GeocodioBulkGeocoder
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
from geocoder import GoogleMapsGeocoder
|
from cartodb_services.google.geocoder import GoogleMapsGeocoder
|
||||||
from bulk_geocoder import GoogleMapsBulkGeocoder
|
from cartodb_services.google.bulk_geocoder import GoogleMapsBulkGeocoder
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
from exceptions import MalformedResult
|
from cartodb_services.google.exceptions import MalformedResult
|
||||||
from cartodb_services import StreetPointBulkGeocoder
|
from cartodb_services import StreetPointBulkGeocoder
|
||||||
from cartodb_services.geocoder import compose_address, geocoder_error_response
|
from cartodb_services.geocoder import compose_address, geocoder_error_response
|
||||||
from cartodb_services.google import GoogleMapsGeocoder
|
from cartodb_services.google import GoogleMapsGeocoder
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import googlemaps
|
import googlemaps
|
||||||
import base64
|
import base64
|
||||||
from exceptions import InvalidGoogleCredentials
|
from cartodb_services.google.exceptions import InvalidGoogleCredentials
|
||||||
|
|
||||||
|
|
||||||
class GoogleMapsClientFactory():
|
class GoogleMapsClientFactory():
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#!/usr/local/bin/python
|
#!/usr/local/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
try:
|
||||||
|
from urlparse import parse_qs
|
||||||
|
except:
|
||||||
|
from urllib.parse import parse_qs
|
||||||
|
|
||||||
from urlparse import parse_qs
|
from cartodb_services.google.exceptions import MalformedResult
|
||||||
|
|
||||||
from exceptions import MalformedResult
|
|
||||||
from cartodb_services.geocoder import compose_address, geocoder_metadata, PRECISION_PRECISE, PRECISION_INTERPOLATED, EMPTY_RESPONSE
|
from cartodb_services.geocoder import compose_address, geocoder_metadata, PRECISION_PRECISE, PRECISION_INTERPOLATED, EMPTY_RESPONSE
|
||||||
from cartodb_services.google.exceptions import InvalidGoogleCredentials
|
from cartodb_services.google.exceptions import InvalidGoogleCredentials
|
||||||
from client_factory import GoogleMapsClientFactory
|
from client_factory import GoogleMapsClientFactory
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
from geocoder import HereMapsGeocoder
|
from cartodb_services.here.geocoder import HereMapsGeocoder
|
||||||
from bulk_geocoder import HereMapsBulkGeocoder
|
from cartodb_services.here.bulk_geocoder import HereMapsBulkGeocoder
|
||||||
from routing import HereMapsRoutingIsoline
|
from cartodb_services.here.routing import HereMapsRoutingIsoline
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from exceptions import WrongParams
|
from cartodb_services.here.exceptions import WrongParams
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
from cartodb_services.metrics import Traceable
|
from cartodb_services.metrics import Traceable
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from routing import MapboxRouting, MapboxRoutingResponse
|
from cartodb_services.mapbox.routing import MapboxRouting, MapboxRoutingResponse
|
||||||
from geocoder import MapboxGeocoder
|
from cartodb_services.mapbox.geocoder import MapboxGeocoder
|
||||||
from bulk_geocoder import MapboxBulkGeocoder
|
from cartodb_services.mapbox.bulk_geocoder import MapboxBulkGeocoder
|
||||||
from isolines import MapboxIsolines, MapboxIsochronesResponse
|
from cartodb_services.mapbox.isolines import MapboxIsolines, MapboxIsochronesResponse
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from routing import MapzenRouting, MapzenRoutingResponse
|
from cartodb_services.mapzen.routing import MapzenRouting, MapzenRoutingResponse
|
||||||
from isolines import MapzenIsolines
|
from cartodb_services.mapzen.isolines import MapzenIsolines
|
||||||
from geocoder import MapzenGeocoder
|
from cartodb_services.mapzen.geocoder import MapzenGeocoder
|
||||||
from matrix_client import MatrixClient
|
from cartodb_services.mapzen.matrix_client import MatrixClient
|
||||||
from isochrones import MapzenIsochrones
|
from cartodb_services.mapzen.isochrones import MapzenIsochrones
|
||||||
|
@ -135,7 +135,7 @@ class MapzenIsolines:
|
|||||||
# delete points that got None
|
# delete points that got None
|
||||||
location_estimates_filtered = []
|
location_estimates_filtered = []
|
||||||
for i, c in enumerate(costs):
|
for i, c in enumerate(costs):
|
||||||
if c <> isorange:
|
if c != isorange:
|
||||||
location_estimates_filtered.append(location_estimates[i])
|
location_estimates_filtered.append(location_estimates[i])
|
||||||
|
|
||||||
return location_estimates_filtered
|
return location_estimates_filtered
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from config import GeocoderConfig, IsolinesRoutingConfig, InternalGeocoderConfig, RoutingConfig, ConfigException, ObservatoryConfig
|
from cartodb_services.metrics.config import GeocoderConfig, IsolinesRoutingConfig, InternalGeocoderConfig, RoutingConfig, ConfigException, ObservatoryConfig
|
||||||
from quota import QuotaService
|
from cartodb_services.metrics.quota import QuotaService
|
||||||
from user import UserMetricsService
|
from cartodb_services.metrics.user import UserMetricsService
|
||||||
from log import metrics, MetricsDataGatherer, Traceable
|
from cartodb_services.metrics.log import metrics, MetricsDataGatherer, Traceable
|
||||||
|
@ -45,7 +45,7 @@ class ServiceConfig(object):
|
|||||||
|
|
||||||
def _get_effective_monthly_quota(self, quota_key, default=0):
|
def _get_effective_monthly_quota(self, quota_key, default=0):
|
||||||
quota_from_redis = self._redis_config.get(quota_key, None)
|
quota_from_redis = self._redis_config.get(quota_key, None)
|
||||||
if quota_from_redis and quota_from_redis <> '':
|
if quota_from_redis and quota_from_redis != '':
|
||||||
return int(quota_from_redis)
|
return int(quota_from_redis)
|
||||||
else:
|
else:
|
||||||
return default
|
return default
|
||||||
|
@ -6,7 +6,10 @@ import uuid
|
|||||||
import plpy
|
import plpy
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from urlparse import urlparse
|
try:
|
||||||
|
from urlparse import urlparse
|
||||||
|
except:
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from user import UserMetricsService
|
from cartodb_services.metrics.user import UserMetricsService
|
||||||
from log import MetricsDataGatherer
|
from cartodb_services.metrics.log import MetricsDataGatherer
|
||||||
from datetime import date
|
from datetime import date
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from ..core.interfaces import ConfigBackendInterface
|
from ..core.interfaces import ConfigBackendInterface
|
||||||
from null_config import NullConfigStorage
|
from cartodb_services.refactor.storage.null_config import NullConfigStorage
|
||||||
|
|
||||||
|
|
||||||
class RedisConfigStorage(ConfigBackendInterface):
|
class RedisConfigStorage(ConfigBackendInterface):
|
||||||
|
@ -18,5 +18,5 @@ class RedisConnectionBuilder():
|
|||||||
else:
|
else:
|
||||||
conn = StrictRedis(host=self._config.host, port=self._config.port,
|
conn = StrictRedis(host=self._config.host, port=self._config.port,
|
||||||
db=self._config.db, retry_on_timeout=True,
|
db=self._config.db, retry_on_timeout=True,
|
||||||
socket_timeout=self._config.timeout)
|
socket_timeout=self._config.timeout, decode_responses=True)
|
||||||
return conn
|
return conn
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from geocoder import TomTomGeocoder
|
from cartodb_services.tomtom.geocoder import TomTomGeocoder
|
||||||
from bulk_geocoder import TomTomBulkGeocoder
|
from cartodb_services.tomtom.bulk_geocoder import TomTomBulkGeocoder
|
||||||
from routing import TomTomRouting, TomTomRoutingResponse
|
from cartodb_services.tomtom.routing import TomTomRouting, TomTomRoutingResponse
|
||||||
from isolines import TomTomIsolines, TomTomIsochronesResponse
|
from cartodb_services.tomtom.isolines import TomTomIsolines, TomTomIsochronesResponse
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
from redis_tools import RedisConnection, RedisDBConfig
|
from .redis_tools import RedisConnection, RedisDBConfig
|
||||||
from coordinates import Coordinate
|
from .coordinates import Coordinate
|
||||||
from polyline import PolyLine
|
from .polyline import PolyLine
|
||||||
from log import Logger, LoggerConfig
|
from .log import Logger, LoggerConfig
|
||||||
from rate_limiter import RateLimiter
|
from .rate_limiter import RateLimiter
|
||||||
from service_manager import ServiceManager
|
from .service_manager import ServiceManager
|
||||||
from legacy_service_manager import LegacyServiceManager
|
from .legacy_service_manager import LegacyServiceManager
|
||||||
from exceptions import QuotaExceededException, RateLimitExceeded
|
from .exceptions import QuotaExceededException, RateLimitExceeded
|
||||||
from country import country_to_iso3
|
from .country import country_to_iso3
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from exceptions import TimeoutException
|
from cartodb_services.tools.exceptions import TimeoutException
|
||||||
import re
|
import re
|
||||||
|
|
||||||
DEFAULT_RETRY_TIMEOUT = 60
|
DEFAULT_RETRY_TIMEOUT = 60
|
||||||
|
@ -23,7 +23,7 @@ class RedisConnection:
|
|||||||
else:
|
else:
|
||||||
conn = StrictRedis(host=self._config.host, port=self._config.port,
|
conn = StrictRedis(host=self._config.host, port=self._config.port,
|
||||||
db=self._config.db, retry_on_timeout=True,
|
db=self._config.db, retry_on_timeout=True,
|
||||||
socket_timeout=self._config.timeout)
|
socket_timeout=self._config.timeout, decode_responses=True)
|
||||||
return conn
|
return conn
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class ImportHelper:
|
|||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
response_json = json.loads(response.text)
|
response_json = json.loads(response.text)
|
||||||
if not response_json['success']:
|
if not response_json['success']:
|
||||||
print "Error importing the test dataset: {0}".format(response.text)
|
print("Error importing the test dataset: {0}".format(response.text))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
while(True):
|
while(True):
|
||||||
table_name = ImportHelper.get_imported_table_name(
|
table_name = ImportHelper.get_imported_table_name(
|
||||||
@ -42,8 +42,8 @@ class ImportHelper:
|
|||||||
schema, username, host, import_id, api_key)
|
schema, username, host, import_id, api_key)
|
||||||
import_data_response = requests.get(import_url)
|
import_data_response = requests.get(import_url)
|
||||||
if import_data_response.status_code != 200:
|
if import_data_response.status_code != 200:
|
||||||
print "Error getting the table name from " \
|
print("Error getting the table name from " \
|
||||||
"the import data: {0}".format(import_data_response.text)
|
"the import data: {0}".format(import_data_response.text))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
import_data_json = json.loads(import_data_response.text)
|
import_data_json = json.loads(import_data_response.text)
|
||||||
|
|
||||||
@ -57,5 +57,5 @@ class ImportHelper:
|
|||||||
)
|
)
|
||||||
response = requests.get(url)
|
response = requests.get(url)
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
print "Error cleaning the test dataset: {0}".format(response.text)
|
print("Error cleaning the test dataset: {0}".format(response.text))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -10,7 +10,7 @@ def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
|
|||||||
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
|
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
|
||||||
|
|
||||||
|
|
||||||
def assert_close_enough(xy_a, xy_b, rel_tol=0.0001, abs_tol=0.0005):
|
def assert_close_enough(xy_a, xy_b, rel_tol=0.001, abs_tol=0.0005):
|
||||||
"""
|
"""
|
||||||
Asserts that the given points are "close enough", in a square.
|
Asserts that the given points are "close enough", in a square.
|
||||||
:param xy_a: Array of 2 elements, X and Y.
|
:param xy_a: Array of 2 elements, X and Y.
|
||||||
@ -23,7 +23,7 @@ def assert_close_enough(xy_a, xy_b, rel_tol=0.0001, abs_tol=0.0005):
|
|||||||
assert_true(isclose(xy_a[i], xy_b[i], rel_tol, abs_tol),
|
assert_true(isclose(xy_a[i], xy_b[i], rel_tol, abs_tol),
|
||||||
"Coord {} error: {} and {} are not closer than {}, {}".format(
|
"Coord {} error: {} and {} are not closer than {}, {}".format(
|
||||||
i, xy_a[i], xy_b[i], rel_tol, abs_tol
|
i, xy_a[i], xy_b[i], rel_tol, abs_tol
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
class IntegrationTestHelper:
|
class IntegrationTestHelper:
|
||||||
@ -45,11 +45,15 @@ class IntegrationTestHelper:
|
|||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def execute_query_raw(cls, sql_api_url, query):
|
def execute_query_raw(cls, sql_api_url, query, method='GET'):
|
||||||
requests.packages.urllib3.disable_warnings()
|
requests.packages.urllib3.disable_warnings()
|
||||||
query_url = "{0}?q={1}".format(sql_api_url, query)
|
if method.upper() == 'GET':
|
||||||
print "Executing query: {0}".format(query_url)
|
query_url = "{0}?q={1}".format(sql_api_url, query)
|
||||||
query_response = requests.get(query_url)
|
query_response = requests.get(query_url)
|
||||||
|
print("Executing query GET: {0}".format(query_url))
|
||||||
|
else:
|
||||||
|
query_response = requests.post(sql_api_url, data={"q": query})
|
||||||
|
print("Executing query POST: {0}".format(sql_api_url))
|
||||||
if query_response.status_code != 200:
|
if query_response.status_code != 200:
|
||||||
raise Exception(json.loads(query_response.text)['error'])
|
raise Exception(json.loads(query_response.text)['error'])
|
||||||
return json.loads(query_response.text)
|
return json.loads(query_response.text)
|
||||||
|
@ -85,9 +85,9 @@ class TestStreetFunctionsSetUp(TestCase):
|
|||||||
|
|
||||||
TOMTOM_METADATAS = {
|
TOMTOM_METADATAS = {
|
||||||
'Plaza España, Barcelona':
|
'Plaza España, Barcelona':
|
||||||
{'relevance': 0.85, 'precision': 'precise', 'match_types': ['street']},
|
{'relevance': 0.72, 'precision': 'precise', 'match_types': ['street']},
|
||||||
'Santiago Rusiñol 123, Valladolid':
|
'Santiago Rusiñol 123, Valladolid':
|
||||||
{'relevance': 0.45, 'precision': 'interpolated', 'match_types': ['street']}
|
{'relevance': 0.74, 'precision': 'precise', 'match_types': ['street']}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAPBOX_METADATAS = {
|
MAPBOX_METADATAS = {
|
||||||
@ -151,10 +151,9 @@ class TestStreetFunctions(TestStreetFunctionsSetUp):
|
|||||||
query = "SELECT cdb_dataservices_client.cdb_geocode_street_point(street) " \
|
query = "SELECT cdb_dataservices_client.cdb_geocode_street_point(street) " \
|
||||||
"as geometry FROM {0} LIMIT 1".format(table)
|
"as geometry FROM {0} LIMIT 1".format(table)
|
||||||
try:
|
try:
|
||||||
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
self._run_authenticated(query)['rows'][0]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
assert_equal(e.message[0],
|
assert_equal(e, "permission denied for relation {}".format(table))
|
||||||
"permission denied for relation {}".format(table))
|
|
||||||
|
|
||||||
def test_component_aggregation(self):
|
def test_component_aggregation(self):
|
||||||
query = "select st_x(the_geom), st_y(the_geom) from (" \
|
query = "select st_x(the_geom), st_y(the_geom) from (" \
|
||||||
@ -335,7 +334,7 @@ class TestBulkStreetFunctions(TestStreetFunctionsSetUp):
|
|||||||
"{}" \
|
"{}" \
|
||||||
"]''::jsonb) as (cartodb_id integer, address text)', " \
|
"]''::jsonb) as (cartodb_id integer, address text)', " \
|
||||||
"'address', null, null, null, {})".format(','.join(streets), batch_size)
|
"'address', null, null, null, {})".format(','.join(streets), batch_size)
|
||||||
response = self._run_authenticated(query)
|
response = self._run_authenticated(query, method='POST')
|
||||||
assert_equal(n, len(response['rows']))
|
assert_equal(n, len(response['rows']))
|
||||||
for row in response['rows']:
|
for row in response['rows']:
|
||||||
assert_not_equal(row['st_x'], None)
|
assert_not_equal(row['st_x'], None)
|
||||||
@ -413,12 +412,14 @@ class TestBulkStreetFunctions(TestStreetFunctionsSetUp):
|
|||||||
for r, e in zip(response['rows'], expected):
|
for r, e in zip(response['rows'], expected):
|
||||||
self.assert_metadata(r['metadata'], e)
|
self.assert_metadata(r['metadata'], e)
|
||||||
|
|
||||||
def _run_authenticated(self, query):
|
def _run_authenticated(self, query, method='GET'):
|
||||||
authenticated_query = "{}&api_key={}".format(query,
|
api_key = self.env_variables['api_key']
|
||||||
self.env_variables[
|
url = self.sql_api_url
|
||||||
'api_key'])
|
auth_query = "{}&api_key={}".format(query, api_key)
|
||||||
return IntegrationTestHelper.execute_query_raw(self.sql_api_url,
|
if method.upper() != 'GET':
|
||||||
authenticated_query)
|
auth_query = query
|
||||||
|
url = "{}?api_key={}".format(self.sql_api_url, api_key)
|
||||||
|
return IntegrationTestHelper.execute_query_raw(url, auth_query, method)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _x_y_by_cartodb_id(response):
|
def _x_y_by_cartodb_id(response):
|
||||||
|
@ -36,7 +36,7 @@ def main():
|
|||||||
set_environment_variables(username, api_key, table_name, host, schema)
|
set_environment_variables(username, api_key, table_name, host, schema)
|
||||||
execute_tests()
|
execute_tests()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print e.message
|
print(e)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
finally:
|
finally:
|
||||||
clean_environment_variables()
|
clean_environment_variables()
|
||||||
@ -45,11 +45,11 @@ def main():
|
|||||||
|
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print """Usage: run_tests.py [options] username api_key
|
print("""Usage: run_tests.py [options] username api_key
|
||||||
Options:
|
Options:
|
||||||
-h: Show this help
|
-h: Show this help
|
||||||
--host: take that host as base (by default is cartodb.com)
|
--host: take that host as base (by default is cartodb.com)
|
||||||
--schema: define the url schema [http/https] (by default https)"""
|
--schema: define the url schema [http/https] (by default https)""")
|
||||||
|
|
||||||
|
|
||||||
def execute_tests():
|
def execute_tests():
|
||||||
@ -59,7 +59,7 @@ def execute_tests():
|
|||||||
stderr=subprocess.PIPE
|
stderr=subprocess.PIPE
|
||||||
)
|
)
|
||||||
out, err = process.communicate()
|
out, err = process.communicate()
|
||||||
print err
|
print(err.decode('utf-8'))
|
||||||
regexp = re.compile(r'FAILED \(.*\)')
|
regexp = re.compile(r'FAILED \(.*\)')
|
||||||
if regexp.search(err) is not None:
|
if regexp.search(err) is not None:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
Loading…
Reference in New Issue
Block a user