diff --git a/expected/test_ddl_triggers.out b/expected/test_ddl_triggers.out index cf0978c..53fb677 100644 --- a/expected/test_ddl_triggers.out +++ b/expected/test_ddl_triggers.out @@ -32,6 +32,11 @@ NOTICE: trigger "update_the_geom_webmercator_trigger" for table "c.t3" does not NOTICE: trigger "update_updated_at_trigger" for table "c.t3" does not exist, skipping NOTICE: trigger "test_quota" for table "c.t3" does not exist, skipping NOTICE: trigger "test_quota_per_row" for table "c.t3" does not exist, skipping +NOTICE: event trigger "cdb_on_relation_create" does not exist, skipping +NOTICE: event trigger "cdb_on_relation_drop" does not exist, skipping +NOTICE: event trigger "cdb_on_alter_column" does not exist, skipping +NOTICE: event trigger "cdb_on_drop_column" does not exist, skipping +NOTICE: event trigger "cdb_on_add_column" does not exist, skipping NOTICE: cdb_invalidate_varnish(c.t3) called select cartodb_id, created_at=updated_at as "c=u", @@ -47,12 +52,46 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)) as age -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; tabname | age ---------+----- c.t3 | 0 (1 row) +-- Table with cartodb_id field, see +-- http://github.com/CartoDB/cartodb-postgresql/issues/32 +select 1 as cartodb_id INTO c.t4; +NOTICE: trigger "track_updates" for table "c.t4" does not exist, skipping +NOTICE: trigger "update_the_geom_webmercator_trigger" for table "c.t4" does not exist, skipping +NOTICE: trigger "update_updated_at_trigger" for table "c.t4" does not exist, skipping +NOTICE: trigger "test_quota" for table "c.t4" does not exist, skipping +NOTICE: trigger "test_quota_per_row" for table "c.t4" does not exist, skipping +NOTICE: Column cartodb_id already exists +NOTICE: event trigger "cdb_on_relation_create" does not exist, skipping +NOTICE: event trigger "cdb_on_relation_drop" does not exist, skipping +NOTICE: event trigger "cdb_on_alter_column" does not exist, skipping +NOTICE: event trigger "cdb_on_drop_column" does not exist, skipping +NOTICE: event trigger "cdb_on_add_column" does not exist, skipping +NOTICE: cdb_invalidate_varnish(c.t4) called +select + cartodb_id, created_at=updated_at as "c=u", + NOW() - updated_at < '1 secs' as "u<1s", + the_geom, the_geom_webmercator +from c.t4; + cartodb_id | c=u | u<1s | the_geom | the_geom_webmercator +------------+-----+------+----------+---------------------- + 1 | t | t | | +(1 row) + +select + tabname::text, + round(extract('secs' from now() - updated_at)) as age +FROM CDB_TableMetadata WHERE tabname = 'c.t4'::regclass; + tabname | age +---------+----- + c.t4 | 0 +(1 row) + ---------------------------- -- ALTER TABLE RENAME COLUMN ---------------------------- @@ -87,7 +126,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; tabname | agecs ---------+------- c.t3 | 0 @@ -124,7 +163,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; tabname | agecs ---------+------- c.t3 | 0 @@ -164,7 +203,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; tabname | agecs ---------+------- c.t3 | 0 @@ -195,7 +234,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; tabname | agecs ---------+------- c.t3 | 0 @@ -206,8 +245,8 @@ FROM CDB_TableMetadata; ---------------------------- RESET SESSION AUTHORIZATION; drop schema c cascade; -NOTICE: drop cascades to table c.t3 -select count(*) from CDB_TableMetadata; +NOTICE: drop cascades to 2 other objects +select count(*) from CDB_TableMetadata; count ------- 0 diff --git a/scripts-available/CDB_DDLTriggers.sql b/scripts-available/CDB_DDLTriggers.sql index 5c58844..bce8fc4 100644 --- a/scripts-available/CDB_DDLTriggers.sql +++ b/scripts-available/CDB_DDLTriggers.sql @@ -24,9 +24,13 @@ BEGIN RETURN; END IF; + PERFORM cartodb.cdb_disable_ddl_hooks(); + -- CDB_CartodbfyTable must not create tables, or infinite loop will happen PERFORM cartodb.CDB_CartodbfyTable(event_info.relation); + PERFORM cartodb.cdb_enable_ddl_hooks(); + RAISE DEBUG 'Inserting into cartodb.CDB_TableMetadata'; -- Add entry to CDB_TableMetadata (should CartodbfyTable do this?) diff --git a/sql/test_ddl_triggers.sql b/sql/test_ddl_triggers.sql index 6972673..eae97c5 100644 --- a/sql/test_ddl_triggers.sql +++ b/sql/test_ddl_triggers.sql @@ -29,7 +29,20 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)) as age -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; + +-- Table with cartodb_id field, see +-- http://github.com/CartoDB/cartodb-postgresql/issues/32 +select 1 as cartodb_id INTO c.t4; +select + cartodb_id, created_at=updated_at as "c=u", + NOW() - updated_at < '1 secs' as "u<1s", + the_geom, the_geom_webmercator +from c.t4; +select + tabname::text, + round(extract('secs' from now() - updated_at)) as age +FROM CDB_TableMetadata WHERE tabname = 'c.t4'::regclass; ---------------------------- -- ALTER TABLE RENAME COLUMN @@ -48,7 +61,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; select pg_sleep(.1); alter table c.t3 rename column the_geom_webmercator to webmerc2; @@ -63,7 +76,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; ---------------------------- -- ALTER TABLE DROP COLUMN @@ -82,7 +95,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; ---------------------------- -- ALTER TABLE ADD COLUMN @@ -101,7 +114,7 @@ from c.t3; select tabname::text, round(extract('secs' from now() - updated_at)*10) as agecs -FROM CDB_TableMetadata; +FROM CDB_TableMetadata WHERE tabname = 'c.t3'::regclass; ---------------------------- -- DROP TABLE @@ -109,7 +122,7 @@ FROM CDB_TableMetadata; RESET SESSION AUTHORIZATION; drop schema c cascade; -select count(*) from CDB_TableMetadata; +select count(*) from CDB_TableMetadata; DROP USER cartodb_postgresql_unpriv_user; DROP FUNCTION _CDB_UserQuotaInBytes();