Next,
it turned out that adding on delete cascade to the fs_root_folders table wasn't enough and another table affected is in a completely different package, oacs-dav. Without both of them taken care of (and the lie mentioned above), you can't delete root folders.
Here is the upgrade script part:
alter table
dav_site_node_folder_map
drop constraint
dav_impls_folder_id_fk;alter table
dav_site_node_folder_map
add constraint
dav_impls_folder_id_fk
foreign key (folder_id)
references cr_folders
on delete cascade;
And here is the diff for the create script:
Index: oacs-dav-create.sql
===================================================================
RCS file: /cvsroot/openacs-4/packages/oacs-dav/sql/postgresql/oacs-dav-create.sql,v
retrieving revision 1.2
diff -u -r1.2 oacs-dav-create.sql
--- oacs-dav-create.sql 12 Mar 2005 17:06:21 -0000 1.2
+++ oacs-dav-create.sql 9 Sep 2009 03:15:42 -0000
@@ -14,7 +14,7 @@
references site_nodes on delete cascade,
folder_id integer
constraint dav_impls_folder_id_fk
- references cr_folders,
+ references cr_folders on delete cascade,
enabled_p boolean
);