From 83707297de132beb4067c244ae7492a14f395a9f Mon Sep 17 00:00:00 2001 From: Gonzalo Riestra Date: Tue, 12 Mar 2019 18:39:48 +0100 Subject: [PATCH 1/3] add explicit schema for all functions --- scripts-available/CDB_GhostTables.sql | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts-available/CDB_GhostTables.sql b/scripts-available/CDB_GhostTables.sql index 2f9e40e..c948b24 100644 --- a/scripts-available/CDB_GhostTables.sql +++ b/scripts-available/CDB_GhostTables.sql @@ -1,5 +1,5 @@ -- Enqueues a job to run Ghost tables linking process for the provided username -CREATE OR REPLACE FUNCTION _CDB_LinkGhostTables(username text, db_name text, event_name text) +CREATE OR REPLACE FUNCTION cartodb._CDB_LinkGhostTables(username text, db_name text, event_name text) RETURNS void AS $$ if not username: @@ -46,7 +46,7 @@ AS $$ $$ LANGUAGE 'plpythonu' VOLATILE PARALLEL UNSAFE; -- Enqueues a job to run Ghost tables linking process for the current user -CREATE OR REPLACE FUNCTION CDB_LinkGhostTables(event_name text DEFAULT 'USER') +CREATE OR REPLACE FUNCTION cartodb.CDB_LinkGhostTables(event_name text DEFAULT 'USER') RETURNS void AS $$ DECLARE @@ -56,13 +56,13 @@ AS $$ EXECUTE 'SELECT CDB_Username();' INTO username; EXECUTE 'SELECT current_database();' INTO db_name; - PERFORM _CDB_LinkGhostTables(username, db_name, event_name); + PERFORM cartodb._CDB_LinkGhostTables(username, db_name, event_name); RAISE NOTICE '_CDB_LinkGhostTables() called with username=%, event_name=%', username, event_name; END; $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE SECURITY DEFINER; -- Trigger function to call CDB_LinkGhostTables() -CREATE OR REPLACE FUNCTION _CDB_LinkGhostTablesTrigger() +CREATE OR REPLACE FUNCTION cartodb._CDB_LinkGhostTablesTrigger() RETURNS trigger AS $$ DECLARE @@ -70,13 +70,13 @@ AS $$ BEGIN EXECUTE 'SELECT tag FROM cartodb.cdb_ddl_execution WHERE txid = txid_current();' INTO ddl_tag; DELETE FROM cartodb.cdb_ddl_execution WHERE txid = txid_current(); - PERFORM CDB_LinkGhostTables(ddl_tag); + PERFORM cartodb.CDB_LinkGhostTables(ddl_tag); RETURN NULL; END; $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE SECURITY DEFINER; -- Event trigger to save the current transaction in cartodb.cdb_ddl_execution -CREATE OR REPLACE FUNCTION CDB_SaveDDLTransaction() +CREATE OR REPLACE FUNCTION cartodb.CDB_SaveDDLTransaction() RETURNS event_trigger AS $$ BEGIN @@ -85,7 +85,7 @@ AS $$ $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE SECURITY DEFINER; -- Creates the trigger on DDL events to link ghost tables -CREATE OR REPLACE FUNCTION CDB_EnableGhostTablesTrigger() +CREATE OR REPLACE FUNCTION cartodb.CDB_EnableGhostTablesTrigger() RETURNS void AS $$ BEGIN @@ -99,17 +99,17 @@ AS $$ AFTER INSERT ON cartodb.cdb_ddl_execution INITIALLY DEFERRED FOR EACH ROW - EXECUTE PROCEDURE _CDB_LinkGhostTablesTrigger(); + EXECUTE PROCEDURE cartodb._CDB_LinkGhostTablesTrigger(); CREATE EVENT TRIGGER link_ghost_tables ON ddl_command_end WHEN TAG IN ('CREATE TABLE', 'SELECT INTO', 'DROP TABLE', 'ALTER TABLE', 'CREATE TRIGGER', 'DROP TRIGGER', 'CREATE VIEW', 'DROP VIEW', 'ALTER VIEW') - EXECUTE PROCEDURE CDB_SaveDDLTransaction(); + EXECUTE PROCEDURE cartodb.CDB_SaveDDLTransaction(); END; $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE; -- Drops the trigger on DDL events to link ghost tables -CREATE OR REPLACE FUNCTION CDB_DisableGhostTablesTrigger() +CREATE OR REPLACE FUNCTION cartodb.CDB_DisableGhostTablesTrigger() RETURNS void AS $$ BEGIN From e19489144cd43884cfb733f7ec7acc37e335c931 Mon Sep 17 00:00:00 2001 From: Gonzalo Riestra Date: Wed, 13 Mar 2019 09:08:13 +0100 Subject: [PATCH 2/3] simplify queries --- scripts-available/CDB_GhostTables.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts-available/CDB_GhostTables.sql b/scripts-available/CDB_GhostTables.sql index c948b24..91468f1 100644 --- a/scripts-available/CDB_GhostTables.sql +++ b/scripts-available/CDB_GhostTables.sql @@ -68,8 +68,7 @@ AS $$ DECLARE ddl_tag TEXT; BEGIN - EXECUTE 'SELECT tag FROM cartodb.cdb_ddl_execution WHERE txid = txid_current();' INTO ddl_tag; - DELETE FROM cartodb.cdb_ddl_execution WHERE txid = txid_current(); + EXECUTE 'DELETE FROM cartodb.cdb_ddl_execution WHERE txid = txid_current() RETURNING tag;' INTO ddl_tag; PERFORM cartodb.CDB_LinkGhostTables(ddl_tag); RETURN NULL; END; From 45fed9cf1bb6425d6b3c4faeb7ed1fd8880807b9 Mon Sep 17 00:00:00 2001 From: Gonzalo Riestra Date: Wed, 13 Mar 2019 10:29:50 +0100 Subject: [PATCH 3/3] more explicit schemas --- scripts-available/CDB_GhostTables.sql | 2 +- scripts-available/CDB_Username.sql | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts-available/CDB_GhostTables.sql b/scripts-available/CDB_GhostTables.sql index 91468f1..cb48e88 100644 --- a/scripts-available/CDB_GhostTables.sql +++ b/scripts-available/CDB_GhostTables.sql @@ -53,7 +53,7 @@ AS $$ username TEXT; db_name TEXT; BEGIN - EXECUTE 'SELECT CDB_Username();' INTO username; + EXECUTE 'SELECT cartodb.CDB_Username();' INTO username; EXECUTE 'SELECT current_database();' INTO db_name; PERFORM cartodb._CDB_LinkGhostTables(username, db_name, event_name); diff --git a/scripts-available/CDB_Username.sql b/scripts-available/CDB_Username.sql index 9c6a5bc..71dcfa6 100644 --- a/scripts-available/CDB_Username.sql +++ b/scripts-available/CDB_Username.sql @@ -1,6 +1,6 @@ -- Returns the cartodb username of the current PostgreSQL session -CREATE OR REPLACE FUNCTION CDB_Username() +CREATE OR REPLACE FUNCTION cartodb.CDB_Username() RETURNS text AS $$ - SELECT CDB_Conf_GetConf(CONCAT('api_keys_', session_user))->>'username'; + SELECT cartodb.CDB_Conf_GetConf(CONCAT('api_keys_', session_user))->>'username'; $$ LANGUAGE SQL STABLE PARALLEL SAFE SECURITY DEFINER;