cartodb-postgresql/sql/test_ddl_triggers.sql
Sandro Santilli 15740f2ef6 Enable running all tests via "installcheck"
NOTE: also makes CDB_TableMetadata triggers still functional
      when user quota and varnish invalidation functions are missing
      from the database (currently installed by cartodb ruby)
2014-05-06 10:18:38 +02:00

124 lines
2.7 KiB
PL/PgSQL

\set VERBOSITY terse
-- 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 text)
RETURNS void AS '' LANGUAGE 'sql';
END;
$$ LANGUAGE 'plpgsql';
--SELECT tmp();
create schema c;
CREATE USER cartodb_postgresql_unpriv_user;
GRANT ALL ON SCHEMA c to cartodb_postgresql_unpriv_user;
SET SESSION AUTHORIZATION 'cartodb_postgresql_unpriv_user';
--SELECT session_user, current_user;
----------------------
-- CREATE TABLE
----------------------
select 1 as i INTO c.t3;
select
cartodb_id, created_at=updated_at as "c=u",
NOW() - updated_at < '1 secs' as "u<1s",
the_geom, the_geom_webmercator,
i
from c.t3;
select
tabname::text,
round(extract('secs' from now() - updated_at)) as age
FROM CDB_TableMetadata;
----------------------------
-- ALTER TABLE RENAME COLUMN
----------------------------
select pg_sleep(1);
alter table c.t3 rename column the_geom_webmercator to webmerc;
select
cartodb_id, created_at=updated_at as "c=u",
NOW() - updated_at < '1 secs' as "u<1s",
the_geom, the_geom_webmercator,
i, webmerc
from c.t3;
select
tabname::text,
round(extract('secs' from now() - updated_at)) as age
FROM CDB_TableMetadata;
select pg_sleep(1);
alter table c.t3 rename column the_geom_webmercator to webmerc2;
select
cartodb_id, created_at=updated_at as "c=u",
NOW() - updated_at < '1 secs' as "u<1s",
the_geom, the_geom_webmercator,
i, webmerc, webmerc2
from c.t3;
select
tabname::text,
round(extract('secs' from now() - updated_at)) as age
FROM CDB_TableMetadata;
----------------------------
-- ALTER TABLE DROP COLUMN
----------------------------
select pg_sleep(1);
alter table c.t3 drop column the_geom_webmercator;
select
cartodb_id, created_at=updated_at as "c=u",
NOW() - updated_at < '1 secs' as "u<1s",
the_geom, the_geom_webmercator,
i, webmerc, webmerc2
from c.t3;
select
tabname::text,
round(extract('secs' from now() - updated_at)) as age
FROM CDB_TableMetadata;
----------------------------
-- ALTER TABLE ADD COLUMN
----------------------------
select pg_sleep(1);
alter table c.t3 add column id2 int;
select
cartodb_id, created_at=updated_at as "c=u",
NOW() - updated_at < '1 secs' as "u<1s",
the_geom, the_geom_webmercator,
i, webmerc, webmerc2, id2
from c.t3;
select
tabname::text,
round(extract('secs' from now() - updated_at)) as age
FROM CDB_TableMetadata;
----------------------------
-- DROP TABLE
----------------------------
RESET SESSION AUTHORIZATION;
drop schema c cascade;
select count(*) from CDB_TableMetadata;
DROP USER cartodb_postgresql_unpriv_user;