Обсуждение: BUG #2447: backend crashes when plpgsql functions are used in rules
The following bug has been logged online: Bug reference: 2447 Logged by: michael crozier Email address: crozierm@conducivetech.com PostgreSQL version: 8.0.7 & 8.0.3 Operating system: solaris 10 and linux Description: backend crashes when plpgsql functions are used in rules Details: Using a function invocation in the WHERE expression of a RULE causes the backend to crash. I could not reproduce the problem on 8.1-beta4/Linux, but could reproduce it on 8.0.5/Solaris, 8.0.7/Solaris, and 8.0.3/Linux. Here is an example that can cause the crash: CREATE TABLE parent ( id integer primary key); CREATE OR REPLACE FUNCTION rule_condition(parent_row parent ) RETURNS INTEGER AS $$ BEGIN RETURN 0; END; $$ LANGUAGE 'plpgsql'; CREATE OR REPLACE RULE parent_rule AS ON INSERT TO parent WHERE 0=rule_condition(NEW) DO INSTEAD ();
"michael crozier" <crozierm@conducivetech.com> writes: > Using a function invocation in the WHERE expression of a RULE causes the > backend to crash. It's not the function, it's the whole-row Var (ie, unqualified "NEW") that doesn't work. Whole-row Vars in rules never worked at all before 8.0, and evidently they don't work in all contexts in 8.0 either :-(. It's unlikely we'll try to make this actually work in 8.0, but I'll look into erroring out cleanly instead of crashing. Unfortunately it's too late for 8.0.8 :-( regards, tom lane