The following bug has been logged on the website:
Bug reference: 13767
Logged by: Seldom
Email address: needthistool@gmail.com
PostgreSQL version: 9.2.14
Operating system: Linux 4.1.10-17.31.amzn1.x86_64 #1 (~RHEL 4.8.3-9)
Description:
-- Attempt to run the following on any database, no setup necessary.
-- Creating relations with the correct names etc. should not be needed,
-- as the error occurs before the system has a chance to find any relations
absent.
-- The code below fails *in an unexpected way* because no substitution
appears to take place.
-- The correct behavior would be to throw an error stating that only INSERT,
UPDATE, DELETE,
-- and SELECT (DML) statements should be used in combination with the
EXECUTE ... USING construct,
-- perhaps recommending that FORMAT function be used instead.
--
-- ERROR: syntax error at or near "$1"
-- LINE 3: special_constraint_trigger($1,$2,$3);
-- ^
-- SQL state: 42601
-- Context: PL/pgSQL function inline_code_block line 11 at EXECUTE
statement
--
DO LANGUAGE plpgsql $$
DECLARE
-- simulated parameters:
referencing_table TEXT = 'the_great_referencer';
referencing_column TEXT = 'fk_field';
referenced_column TEXT = 'measurement_id';
-- :simulated parameters
BEGIN
EXECUTE 'CREATE CONSTRAINT TRIGGER except_if_changes_break_references_77
AFTER UPDATE OR DELETE ON measurement_unit
DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE
special_constraint_trigger($1,$2,$3);'
USING referenced_column,referencing_table, referencing_column;
END;
$$;