Include some of the cartodb scripts in the extension
NOTE: this is unfinished as cartodb scripts are only referenced and not
really included
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
cartodb--*.sql
|
cartodb--*.sql
|
||||||
results/
|
results/
|
||||||
expected/
|
|
||||||
regression.*
|
regression.*
|
||||||
|
|||||||
@@ -3,13 +3,21 @@
|
|||||||
EXTENSION = cartodb
|
EXTENSION = cartodb
|
||||||
EXTVERSION = 0.1
|
EXTVERSION = 0.1
|
||||||
|
|
||||||
|
CDBSCRIPTS = \
|
||||||
|
scripts-available/CDB_TableMetadata.sql \
|
||||||
|
scripts-available/CDB_Quota.sql \
|
||||||
|
scripts-available/CDB_TransformToWebmercator.sql \
|
||||||
|
scripts-available/CDB_CartodbfyTable.sql \
|
||||||
|
$(END)
|
||||||
|
|
||||||
DATA_built = $(EXTENSION)--$(EXTVERSION).sql
|
DATA_built = $(EXTENSION)--$(EXTVERSION).sql
|
||||||
#DOCS = README.md
|
DOCS = README.md
|
||||||
#REGRESS = hook_on_table_create
|
REGRESS = test_ddl_triggers
|
||||||
|
|
||||||
PG_CONFIG = pg_config
|
PG_CONFIG = pg_config
|
||||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||||
include $(PGXS)
|
include $(PGXS)
|
||||||
|
|
||||||
$(EXTENSION)--$(EXTVERSION).sql: cartodb_hooks.sql
|
$(EXTENSION)--$(EXTVERSION).sql: $(CDBSCRIPTS) cartodb_hooks.sql Makefile
|
||||||
cat $< | grep -v '^\(BEGIN\|END\);$$' > $@
|
cat $(CDBSCRIPTS) | sed 's/\<public\./cartodb./g' > $@
|
||||||
|
cat cartodb_hooks.sql >> $@
|
||||||
|
|||||||
@@ -4,3 +4,4 @@ superuser = true
|
|||||||
relocatable = false
|
relocatable = false
|
||||||
schema = cartodb
|
schema = cartodb
|
||||||
requires = schema_triggers
|
requires = schema_triggers
|
||||||
|
requires = postgis
|
||||||
|
|||||||
+24
-8
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
--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
|
-- Table creation
|
||||||
-- {
|
-- {
|
||||||
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_create_table ()
|
CREATE OR REPLACE FUNCTION cartodb.cdb_handle_create_table ()
|
||||||
@@ -27,10 +25,10 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- CDB_CartodbfyTable must not create tables, or infinite loop will happen
|
-- CDB_CartodbfyTable must not create tables, or infinite loop will happen
|
||||||
PERFORM public.CDB_CartodbfyTable(event_info.relation);
|
PERFORM cartodb.CDB_CartodbfyTable(event_info.relation);
|
||||||
|
|
||||||
-- Add entry to CDB_TableMetadata (should CartodbfyTable do this?)
|
-- Add entry to CDB_TableMetadata (should CartodbfyTable do this?)
|
||||||
INSERT INTO public.CDB_TableMetadata(tabname,updated_at)
|
INSERT INTO cartodb.CDB_TableMetadata(tabname,updated_at)
|
||||||
VALUES (event_info.relation, now());
|
VALUES (event_info.relation, now());
|
||||||
|
|
||||||
END; $$;
|
END; $$;
|
||||||
@@ -58,7 +56,7 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- delete record from CDB_TableMetadata (should invalidate varnish)
|
-- delete record from CDB_TableMetadata (should invalidate varnish)
|
||||||
DELETE FROM public.CDB_TableMetadata WHERE tabname = event_info.old_relation_oid;
|
DELETE FROM cartodb.CDB_TableMetadata WHERE tabname = event_info.old_relation_oid;
|
||||||
|
|
||||||
END; $$;
|
END; $$;
|
||||||
-- }
|
-- }
|
||||||
@@ -89,7 +87,7 @@ BEGIN
|
|||||||
|
|
||||||
PERFORM cartodb.cdb_disable_ddl_hooks();
|
PERFORM cartodb.cdb_disable_ddl_hooks();
|
||||||
|
|
||||||
PERFORM public.CDB_CartodbfyTable(event_info.relation);
|
PERFORM cartodb.CDB_CartodbfyTable(event_info.relation);
|
||||||
|
|
||||||
PERFORM cartodb.cdb_enable_ddl_hooks();
|
PERFORM cartodb.cdb_enable_ddl_hooks();
|
||||||
|
|
||||||
@@ -124,7 +122,7 @@ BEGIN
|
|||||||
|
|
||||||
PERFORM cartodb.cdb_disable_ddl_hooks();
|
PERFORM cartodb.cdb_disable_ddl_hooks();
|
||||||
|
|
||||||
PERFORM public.CDB_CartodbfyTable(event_info.relation);
|
PERFORM cartodb.CDB_CartodbfyTable(event_info.relation);
|
||||||
|
|
||||||
PERFORM cartodb.cdb_enable_ddl_hooks();
|
PERFORM cartodb.cdb_enable_ddl_hooks();
|
||||||
|
|
||||||
@@ -186,5 +184,23 @@ $$ LANGUAGE sql;
|
|||||||
|
|
||||||
SELECT cartodb.cdb_enable_ddl_hooks();
|
SELECT cartodb.cdb_enable_ddl_hooks();
|
||||||
|
|
||||||
END;
|
---- Make sure 'cartodb' is in database search path ?
|
||||||
|
--DO
|
||||||
|
--$$
|
||||||
|
--DECLARE
|
||||||
|
-- var_result text;
|
||||||
|
-- var_cur_search_path text;
|
||||||
|
--BEGIN
|
||||||
|
-- SELECT reset_val INTO var_cur_search_path
|
||||||
|
-- FROM pg_settings WHERE name = 'search_path';
|
||||||
|
--
|
||||||
|
-- IF var_cur_search_path LIKE '%cartodb%' THEN
|
||||||
|
-- RAISE DEBUG '"cartodb" already in database search_path';
|
||||||
|
-- ELSE
|
||||||
|
-- EXECUTE 'ALTER DATABASE ' || quote_ident(current_database()) ||
|
||||||
|
-- ' SET search_path = ' || var_cur_search_path || ', "cartodb"';
|
||||||
|
-- RAISE DEBUG '"cartodb" has been added to end of database search_path';
|
||||||
|
-- END IF;
|
||||||
|
--END
|
||||||
|
--$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
--\i cartodb_hooks.sql
|
||||||
|
--\set VERBOSITY terse
|
||||||
|
CREATE TABLE IF NOT EXISTS
|
||||||
|
public.CDB_TableMetadata (
|
||||||
|
tabname regclass not null primary key,
|
||||||
|
updated_at timestamp with time zone not null default now()
|
||||||
|
);
|
||||||
|
CREATE USER cartodb_postgresql_unpriv_user;
|
||||||
|
SET SESSION AUTHORIZATION 'cartodb_postgresql_unpriv_user';
|
||||||
|
--SELECT session_user, current_user;
|
||||||
|
create schema c;
|
||||||
|
ERROR: permission denied for database contrib_regression
|
||||||
|
--create table c.t3(a int);
|
||||||
|
select 1 as i INTO c.t3;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select * from c.t3;
|
||||||
|
ERROR: relation "c.t3" does not exist
|
||||||
|
LINE 1: select * from c.t3;
|
||||||
|
^
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
alter table c.t3 rename column the_geom_webmercator to webmerc;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select * from c.t3;
|
||||||
|
ERROR: relation "c.t3" does not exist
|
||||||
|
LINE 1: select * from c.t3;
|
||||||
|
^
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
alter table c.t3 rename column the_geom_webmercator to webmerc2;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select * from c.t3;
|
||||||
|
ERROR: relation "c.t3" does not exist
|
||||||
|
LINE 1: select * from c.t3;
|
||||||
|
^
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
alter table c.t3 drop column the_geom_webmercator;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select * from c.t3;
|
||||||
|
ERROR: relation "c.t3" does not exist
|
||||||
|
LINE 1: select * from c.t3;
|
||||||
|
^
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
alter table c.t3 add column id2 int;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select * from c.t3;
|
||||||
|
ERROR: relation "c.t3" does not exist
|
||||||
|
LINE 1: select * from c.t3;
|
||||||
|
^
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
drop schema c cascade;
|
||||||
|
ERROR: schema "c" does not exist
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
ERROR: permission denied for relation cdb_tablemetadata
|
||||||
|
DROP USER cartodb_postgresql_unpriv_user;
|
||||||
|
ERROR: permission denied to drop role
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
--\i cartodb_hooks.sql
|
|
||||||
--\set VERBOSITY terse
|
|
||||||
SET SESSION AUTHORIZATION 'development_cartodb_user_1';
|
|
||||||
--SELECT session_user, current_user;
|
|
||||||
|
|
||||||
|
|
||||||
create schema c;
|
|
||||||
--create table c.t3(a int);
|
|
||||||
select 1 as i INTO c.t3;
|
|
||||||
select * from c.t3;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
alter table c.t3 rename column the_geom_webmercator to webmerc;
|
|
||||||
select * from c.t3;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
alter table c.t3 rename column the_geom_webmercator to webmerc2;
|
|
||||||
select * from c.t3;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
alter table c.t3 drop column the_geom_webmercator;
|
|
||||||
select * from c.t3;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
alter table c.t3 add column id2 int;
|
|
||||||
select * from c.t3;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
drop schema c cascade;
|
|
||||||
select tabname::text, updated_at from CDB_TableMetadata;
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
CREATE EXTENSION postgis;
|
||||||
|
CREATE EXTENSION schema_triggers;
|
||||||
|
CREATE EXTENSION cartodb;
|
||||||
|
|
||||||
|
set search_path to public,cartodb,schema_triggers;
|
||||||
|
|
||||||
|
--set client_min_messages to debug;
|
||||||
|
|
||||||
|
-- Create a stub cdb_invalidate_varnish function if not available
|
||||||
|
--CREATE FUNCTION tmp() returns void AS $$
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
PERFORM cdb_invalidate_varnish(0);
|
||||||
|
EXCEPTION
|
||||||
|
WHEN undefined_function THEN
|
||||||
|
CREATE OR REPLACE FUNCTION cartodb.cdb_invalidate_varnish(tabname regclass)
|
||||||
|
RETURNS void AS '' LANGUAGE 'sql';
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
|
--SELECT tmp();
|
||||||
|
|
||||||
|
|
||||||
|
create schema c;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS
|
||||||
|
public.CDB_TableMetadata (
|
||||||
|
tabname regclass not null primary key,
|
||||||
|
updated_at timestamp with time zone not null default now()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE USER cartodb_postgresql_unpriv_user;
|
||||||
|
GRANT ALL ON SCHEMA c to cartodb_postgresql_unpriv_user;
|
||||||
|
GRANT SELECT ON public.CDB_TableMetadata to cartodb_postgresql_unpriv_user;
|
||||||
|
SET SESSION AUTHORIZATION 'cartodb_postgresql_unpriv_user';
|
||||||
|
--SELECT session_user, current_user;
|
||||||
|
|
||||||
|
|
||||||
|
--create table c.t3(a int);
|
||||||
|
select 1 as i INTO c.t3;
|
||||||
|
select * from c.t3;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
alter table c.t3 rename column the_geom_webmercator to webmerc;
|
||||||
|
select * from c.t3;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
alter table c.t3 rename column the_geom_webmercator to webmerc2;
|
||||||
|
select * from c.t3;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
alter table c.t3 drop column the_geom_webmercator;
|
||||||
|
select * from c.t3;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
alter table c.t3 add column id2 int;
|
||||||
|
select * from c.t3;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
|
||||||
|
RESET SESSION AUTHORIZATION;
|
||||||
|
drop schema c cascade;
|
||||||
|
select tabname::text, updated_at from CDB_TableMetadata;
|
||||||
|
|
||||||
|
DROP TABLE public.CDB_TableMetadata;
|
||||||
|
DROP USER cartodb_postgresql_unpriv_user;
|
||||||
Reference in New Issue
Block a user