Index: openacs-4/packages/acs-kernel/acs-kernel.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/acs-kernel.info,v diff -u -r1.42 -r1.43 --- openacs-4/packages/acs-kernel/acs-kernel.info 3 Oct 2003 16:03:31 -0000 1.42 +++ openacs-4/packages/acs-kernel/acs-kernel.info 6 Oct 2003 13:16:11 -0000 1.43 @@ -7,13 +7,13 @@ t t - + Don Baccus Routines and data models providing the foundation for OpenACS-based Web services. 2003-09-25 OpenACS - + Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-create.sql,v diff -u -r1.21 -r1.22 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-create.sql 10 Sep 2003 08:40:58 -0000 1.21 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-create.sql 6 Oct 2003 13:16:11 -0000 1.22 @@ -107,10 +107,21 @@ returns integer as ' declare remove_user__user_id alias for $1; + v_rec record; begin - delete from users - where user_id = remove_user__user_id; + delete + from acs_permissions + where grantee_id = remove_user__user_id; + for v_rec in select rel_id + from acs_rels + where object_id_two = remove_user__user_id + loop + perform acs_rel__delete(v_rec.rel_id); + end loop; + + perform acs_user__delete(remove_user__user_id); + return 0; end;' language 'plpgsql'; Index: openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d11-5.0d12.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d11-5.0d12.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d11-5.0d12.sql 6 Oct 2003 13:16:11 -0000 1.1 @@ -0,0 +1,27 @@ +-- Fixing bug 895 by making acs__remove_user do what the Oracle version already does, i.e. +-- remove records referencing the user record before attempting to delete it. +-- +-- @author Peter Marklund + +drop function acs__remove_user (integer); +create function acs__remove_user (integer) +returns integer as ' +declare + remove_user__user_id alias for $1; + v_rec record; +begin + delete + from acs_permissions + where grantee_id = remove_user__user_id; + + for v_rec in select rel_id + from acs_rels + where object_id_two = remove_user__user_id + loop + perform acs_rel__delete(v_rec.rel_id); + end loop; + + perform acs_user__delete(remove_user__user_id); + + return 0; +end;' language 'plpgsql';