Move toward cartodb extension

This commit is contained in:
Sandro Santilli
2013-12-02 16:29:02 +01:00
parent a87f358253
commit be25906953
5 changed files with 53 additions and 25 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
cartodb--*.sql
results/
expected/
regression.*

15
Makefile Normal file
View File

@@ -0,0 +1,15 @@
# cartodb/Makefile
EXTENSION = cartodb
EXTVERSION = 0.1
DATA_built = $(EXTENSION)--$(EXTVERSION).sql
#DOCS = README.md
#REGRESS = hook_on_table_create
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
$(EXTENSION)--$(EXTVERSION).sql: cartodb_hooks.sql
cat $< | grep -v '^\(BEGIN\|END\);$$' > $@

6
cartodb.control Normal file
View File

@@ -0,0 +1,6 @@
default_version = '0.1'
comment = 'Turn a database into a cartodb user database.'
superuser = true
relocatable = false
schema = cartodb
requires = schema_triggers

View File

@@ -1,13 +1,13 @@
LOAD 'schema_triggers.so';
CREATE EXTENSION IF NOT EXISTS schema_triggers;
--LOAD 'schema_triggers.so';
--CREATE EXTENSION IF NOT EXISTS schema_triggers;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_triggers TO public;
--GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_triggers TO public;
BEGIN;
-- Table creation
-- {
CREATE OR REPLACE FUNCTION cdb_handle_create_table ()
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_create_table ()
RETURNS event_trigger SECURITY DEFINER LANGUAGE plpgsql AS $$
DECLARE
event_info RECORD;
@@ -38,7 +38,7 @@ END; $$;
-- Table drop
-- {
CREATE OR REPLACE FUNCTION cdb_handle_drop_table ()
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_drop_table ()
RETURNS event_trigger SECURITY DEFINER LANGUAGE plpgsql AS $$
DECLARE
event_info RECORD;
@@ -59,7 +59,7 @@ END; $$;
-- Column alter
-- {
CREATE OR REPLACE FUNCTION cdb_handle_alter_column ()
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_alter_column ()
RETURNS event_trigger SECURITY DEFINER LANGUAGE plpgsql AS $$
DECLARE
event_info RECORD;
@@ -81,11 +81,11 @@ BEGIN
RETURN;
END IF;
PERFORM cdb_disable_ddl_hooks();
PERFORM cartodb.cdb_disable_ddl_hooks();
PERFORM public.CDB_CartodbfyTable(event_info.relation);
PERFORM cdb_enable_ddl_hooks();
PERFORM cartodb.cdb_enable_ddl_hooks();
-- TODO: update CDB_TableMetadata.updated_at (should invalidate varnish)
@@ -94,7 +94,7 @@ END; $$;
-- Column drop
-- {
CREATE OR REPLACE FUNCTION cdb_handle_drop_column ()
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_drop_column ()
RETURNS event_trigger SECURITY DEFINER LANGUAGE plpgsql AS $$
DECLARE
event_info RECORD;
@@ -116,11 +116,11 @@ BEGIN
RETURN;
END IF;
PERFORM cdb_disable_ddl_hooks();
PERFORM cartodb.cdb_disable_ddl_hooks();
PERFORM public.CDB_CartodbfyTable(event_info.relation);
PERFORM cdb_enable_ddl_hooks();
PERFORM cartodb.cdb_enable_ddl_hooks();
-- TODO: update CDB_TableMetadata.updated_at (should invalidate varnish)
@@ -129,7 +129,7 @@ END; $$;
-- Column add
-- {
CREATE OR REPLACE FUNCTION cdb_handle_add_column ()
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_add_column ()
RETURNS event_trigger SECURITY DEFINER LANGUAGE plpgsql AS $$
DECLARE
event_info RECORD;
@@ -156,7 +156,7 @@ BEGIN
END; $$;
-- }
CREATE OR REPLACE FUNCTION cdb_disable_ddl_hooks() returns void AS $$
CREATE OR REPLACE FUNCTION cartodb.cdb_disable_ddl_hooks() returns void AS $$
DROP EVENT TRIGGER IF EXISTS cdb_on_relation_create;
DROP EVENT TRIGGER IF EXISTS cdb_on_relation_drop;
DROP EVENT TRIGGER IF EXISTS cdb_on_alter_column;
@@ -164,16 +164,21 @@ CREATE OR REPLACE FUNCTION cdb_disable_ddl_hooks() returns void AS $$
DROP EVENT TRIGGER IF EXISTS cdb_on_add_column;
$$ LANGUAGE sql;
CREATE OR REPLACE FUNCTION cdb_enable_ddl_hooks() returns void AS $$
CREATE OR REPLACE FUNCTION cartodb.cdb_enable_ddl_hooks() returns void AS $$
SELECT cdb_disable_ddl_hooks();
CREATE EVENT TRIGGER cdb_on_relation_create ON "relation_create" EXECUTE PROCEDURE cdb_handle_create_table();
CREATE EVENT TRIGGER cdb_on_relation_drop ON "relation_drop" EXECUTE PROCEDURE cdb_handle_drop_table();
CREATE EVENT TRIGGER cdb_on_alter_column ON "column_alter" EXECUTE PROCEDURE cdb_handle_alter_column();
CREATE EVENT TRIGGER cdb_on_drop_column ON "column_drop" EXECUTE PROCEDURE cdb_handle_drop_column();
CREATE EVENT TRIGGER cdb_on_add_column ON "column_add" EXECUTE PROCEDURE cdb_handle_add_column();
CREATE EVENT TRIGGER cdb_on_relation_create
ON "relation_create" EXECUTE PROCEDURE cartodb.cdb_handle_create_table();
CREATE EVENT TRIGGER cdb_on_relation_drop
ON "relation_drop" EXECUTE PROCEDURE cartodb.cdb_handle_drop_table();
CREATE EVENT TRIGGER cdb_on_alter_column
ON "column_alter" EXECUTE PROCEDURE cartodb.cdb_handle_alter_column();
CREATE EVENT TRIGGER cdb_on_drop_column
ON "column_drop" EXECUTE PROCEDURE cartodb.cdb_handle_drop_column();
CREATE EVENT TRIGGER cdb_on_add_column
ON "column_add" EXECUTE PROCEDURE cartodb.cdb_handle_add_column();
$$ LANGUAGE sql;
SELECT cdb_enable_ddl_hooks();
SELECT cartodb.cdb_enable_ddl_hooks();
END;

View File

@@ -1,9 +1,7 @@
\i cartodb_hooks.sql
\set VERBOSITY terse
--\i cartodb_hooks.sql
--\set VERBOSITY terse
SET SESSION AUTHORIZATION 'development_cartodb_user_1';
SELECT session_user, current_user;
--SELECT session_user, current_user;
create schema c;