diff --git a/expected/test_ddl_triggers.out b/expected/test_ddl_triggers.out index 7b7ad5d..a811f6d 100644 --- a/expected/test_ddl_triggers.out +++ b/expected/test_ddl_triggers.out @@ -10,7 +10,13 @@ EXCEPTION RETURNS void AS '' LANGUAGE 'sql'; END; $$ LANGUAGE 'plpgsql'; ---SELECT tmp(); +-- Set user quota to infinite +SELECT CDB_SetUserQuotaInBytes(0); + cdb_setuserquotainbytes +------------------------- + 0 +(1 row) + create schema c; CREATE USER cartodb_postgresql_unpriv_user; GRANT ALL ON SCHEMA c to cartodb_postgresql_unpriv_user; @@ -207,3 +213,4 @@ select count(*) from CDB_TableMetadata; (1 row) DROP USER cartodb_postgresql_unpriv_user; +DROP FUNCTION _CDB_UserQuotaInBytes(); diff --git a/scripts-available/CDB_CartodbfyTable.sql b/scripts-available/CDB_CartodbfyTable.sql index af9a8e5..97c754c 100644 --- a/scripts-available/CDB_CartodbfyTable.sql +++ b/scripts-available/CDB_CartodbfyTable.sql @@ -40,6 +40,13 @@ DECLARE exists_geom_cols BOOLEAN[]; BEGIN + -- TODO: Check that user quota is set ? + BEGIN + PERFORM public._CDB_UserQuotaInBytes(); + EXCEPTION WHEN undefined_function THEN + RAISE EXCEPTION 'Please set user quota before cartodbfying tables.'; + END; + -- Drop cartodb triggers (might prevent changing columns) -- "track_updates" diff --git a/sql/test_ddl_triggers.sql b/sql/test_ddl_triggers.sql index 681649d..dcd1f64 100644 --- a/sql/test_ddl_triggers.sql +++ b/sql/test_ddl_triggers.sql @@ -12,8 +12,8 @@ EXCEPTION END; $$ LANGUAGE 'plpgsql'; ---SELECT tmp(); - +-- Set user quota to infinite +SELECT CDB_SetUserQuotaInBytes(0); create schema c; @@ -121,3 +121,4 @@ drop schema c cascade; select count(*) from CDB_TableMetadata; DROP USER cartodb_postgresql_unpriv_user; +DROP FUNCTION _CDB_UserQuotaInBytes(); diff --git a/test/CDB_CartodbfyTableTest.sql b/test/CDB_CartodbfyTableTest.sql index dde5dca..a57be77 100644 --- a/test/CDB_CartodbfyTableTest.sql +++ b/test/CDB_CartodbfyTableTest.sql @@ -132,6 +132,8 @@ LANGUAGE 'plpgsql'; -- table with single non-geometrical column CREATE TABLE t AS SELECT 1::int as a; +SELECT CDB_CartodbfyTable('t'); -- should fail +SELECT CDB_SetUserQuotaInBytes(0); -- Set user quota to infinite SELECT CDB_CartodbfyTableCheck('t', 'single non-geometrical column'); DROP TABLE t; @@ -171,3 +173,4 @@ DROP TABLE t; -- TODO: table with existing custom-triggered the_geom DROP FUNCTION CDB_CartodbfyTableCheck(regclass, text); +DROP FUNCTION _CDB_UserQuotaInBytes(); diff --git a/test/CDB_CartodbfyTableTest_expect b/test/CDB_CartodbfyTableTest_expect index 33ce177..b66c318 100644 --- a/test/CDB_CartodbfyTableTest_expect +++ b/test/CDB_CartodbfyTableTest_expect @@ -1,6 +1,8 @@ SET CREATE FUNCTION SELECT 1 +ERROR: Please set user quota before cartodbfying tables. +0 single non-geometrical column cartodbfied fine DROP TABLE SELECT 1 @@ -24,3 +26,4 @@ trigger-protected the_geom cartodbfied fine extent|BOX(1 1,2 2) DROP TABLE DROP FUNCTION +DROP FUNCTION diff --git a/test/CDB_QuotaTest.sql b/test/CDB_QuotaTest.sql index a9590cd..764daf9 100644 --- a/test/CDB_QuotaTest.sql +++ b/test/CDB_QuotaTest.sql @@ -7,6 +7,7 @@ CREATE TRIGGER test_quota BEFORE UPDATE OR INSERT ON big EXECUTE PROCEDURE CDB_CheckQuota(1,1); INSERT INTO big VALUES (1); -- allowed, check runs before INSERT INTO big VALUES (1); -- disallowed, quota exceeds before +SELECT CDB_SetUserQuotaInBytes(0); SELECT CDB_CartodbfyTable('big'); INSERT INTO big SELECT generate_series(1,1024); SELECT CDB_SetUserQuotaInBytes(8); @@ -15,3 +16,4 @@ SELECT CDB_SetUserQuotaInBytes(0); INSERT INTO big VALUES (1); DROP TABLE big; set client_min_messages to NOTICE; +DROP FUNCTION _CDB_UserQuotaInBytes(); diff --git a/test/CDB_QuotaTest_expect b/test/CDB_QuotaTest_expect index 01a1866..492c8d7 100644 --- a/test/CDB_QuotaTest_expect +++ b/test/CDB_QuotaTest_expect @@ -3,6 +3,7 @@ CREATE TABLE CREATE TRIGGER INSERT 0 1 ERROR: Quota exceeded by 3.9990234375KB +0 INSERT 0 1024 0 @@ -11,3 +12,4 @@ ERROR: Quota exceeded by 103.9921875KB INSERT 0 1 DROP TABLE SET +DROP FUNCTION