diff --git a/contrib/require_where/Makefile b/contrib/require_where/Makefile index 0cf3663..9c41691 100644 --- a/contrib/require_where/Makefile +++ b/contrib/require_where/Makefile @@ -5,6 +5,8 @@ OBJS = require_where.o PGFILEDESC = 'require_where - require DELETE and/or UPDATE to have a WHERE clause' +REGRESS = require_where + ifdef USE_PGXS PG_CONFIG = pg_config PGXS = $(shell $(PG_CONFIG) --pgxs) diff --git a/contrib/require_where/expected/require_where.out b/contrib/require_where/expected/require_where.out index 0876e13..adfd358 100644 --- a/contrib/require_where/expected/require_where.out +++ b/contrib/require_where/expected/require_where.out @@ -1,12 +1,22 @@ -LOAD -CREATE TABLE -COPY 16 -UPDATE 16 -SET -psql:sql/require_where.sql:17: ERROR: UPDATE requires a WHERE clause +-- +-- Test require_where +-- +\set echo all +LOAD 'require_where'; +CREATE TABLE test_require_where(t TEXT); +\copy test_require_where from 'data/test_require_where.data' +UPDATE test_require_where SET t=t; -- succeeds +SET require_where.update TO ON; +UPDATE test_require_where SET t=t; -- fails +ERROR: UPDATE requires a WHERE clause when require_where.delete is set to on HINT: To update all rows, use "WHERE true" or similar. -SET -psql:sql/require_where.sql:21: ERROR: DELETE requires a WHERE clause +UPDATE test_require_where SET t=t WHERE true; -- succeeds +SET require_where.update TO OFF; +UPDATE test_require_where SET t=t; -- succeeds +SET require_where.delete TO ON; +DELETE FROM test_require_where; -- fails +ERROR: DELETE requires a WHERE clause when require_where.delete is set to on HINT: To delete all rows, use "WHERE true" or similar. -SET -DELETE 16 +DELETE FROM test_require_where WHERE true; -- succeeds +SET require_where.delete TO OFF; +DELETE FROM test_require_where; -- succeeds diff --git a/contrib/require_where/sql/require_where.sql b/contrib/require_where/sql/require_where.sql index a1cd90d..4d20b17 100644 --- a/contrib/require_where/sql/require_where.sql +++ b/contrib/require_where/sql/require_where.sql @@ -16,10 +16,18 @@ SET require_where.update TO ON; UPDATE test_require_where SET t=t; -- fails +UPDATE test_require_where SET t=t WHERE true; -- succeeds + +SET require_where.update TO OFF; + +UPDATE test_require_where SET t=t; -- succeeds + SET require_where.delete TO ON; DELETE FROM test_require_where; -- fails -SET require_where.delete TO OFF; -- succeeds +DELETE FROM test_require_where WHERE true; -- succeeds -DELETE FROM test_require_where; -- fails +SET require_where.delete TO OFF; + +DELETE FROM test_require_where; -- succeeds