Let CDB_CheckQuota second parameter override configured user quota
Closes #13 Includes automated test
This commit is contained in:
parent
1643ae2db1
commit
b69ded8f66
@ -35,12 +35,17 @@ BEGIN
|
|||||||
|
|
||||||
IF dice < pbfact THEN
|
IF dice < pbfact THEN
|
||||||
RAISE DEBUG 'Checking quota on table % (dice:%, needed:<%)', TG_RELID::text, dice, pbfact;
|
RAISE DEBUG 'Checking quota on table % (dice:%, needed:<%)', TG_RELID::text, dice, pbfact;
|
||||||
BEGIN
|
IF TG_NARGS > 1 THEN
|
||||||
qmax := public._CDB_UserQuotaInBytes();
|
RAISE NOTICE 'Using quota specified via trigger parameter';
|
||||||
EXCEPTION WHEN undefined_function THEN
|
qmax := TG_ARGV[1];
|
||||||
RAISE WARNING 'Missing _CDB_UserQuotaInBytes(), assuming no quota';
|
ELSE
|
||||||
qmax := 0;
|
BEGIN
|
||||||
END;
|
qmax := public._CDB_UserQuotaInBytes();
|
||||||
|
EXCEPTION WHEN undefined_function THEN
|
||||||
|
RAISE WARNING 'Missing _CDB_UserQuotaInBytes(), assuming no quota';
|
||||||
|
qmax := 0;
|
||||||
|
END;
|
||||||
|
END IF;
|
||||||
|
|
||||||
IF qmax = 0 THEN
|
IF qmax = 0 THEN
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
set client_min_messages to ERROR;
|
set client_min_messages to ERROR;
|
||||||
\set VERBOSITY terse
|
\set VERBOSITY terse
|
||||||
CREATE TABLE big(a int);
|
CREATE TABLE big(a int);
|
||||||
|
-- Try the legacy interface
|
||||||
|
-- See https://github.com/CartoDB/cartodb-postgresql/issues/13
|
||||||
|
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_CartodbfyTable('big');
|
SELECT CDB_CartodbfyTable('big');
|
||||||
INSERT INTO big SELECT generate_series(1,1024);
|
INSERT INTO big SELECT generate_series(1,1024);
|
||||||
SELECT CDB_SetUserQuotaInBytes(8);
|
SELECT CDB_SetUserQuotaInBytes(8);
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
SET
|
SET
|
||||||
CREATE TABLE
|
CREATE TABLE
|
||||||
|
CREATE TRIGGER
|
||||||
|
INSERT 0 1
|
||||||
|
ERROR: Quota exceeded by 3.9990234375KB
|
||||||
|
|
||||||
INSERT 0 1024
|
INSERT 0 1024
|
||||||
0
|
0
|
||||||
|
Loading…
Reference in New Issue
Block a user