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 -N -r1.118 -r1.119
--- openacs-4/packages/acs-kernel/acs-kernel.info 5 Mar 2011 01:47:04 -0000 1.118
+++ openacs-4/packages/acs-kernel/acs-kernel.info 7 Mar 2011 01:39:31 -0000 1.119
@@ -7,15 +7,15 @@
t
t
-
+
OpenACS Core Team
Routines and data models providing the foundation for OpenACS-based Web services.
2010-06-17
OpenACS
The OpenACS kernel contains the core datamodel create and drop scripts for such things as objects, groups, partiies and the supporting PL/SQL and PL/pgSQL procedures.
3
-
+
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql,v
diff -u -N -r1.35 -r1.36
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 5 Mar 2011 22:35:23 -0000 1.35
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 7 Mar 2011 01:39:31 -0000 1.36
@@ -693,19 +693,15 @@
p_type_extension_table, p_name_method,''f'',''f'');
end;' language 'plpgsql';
--- "cascade_p" corresponds to the more logical "drop_objects_p" in the content repository
--- code. The name is being kept for backwards compatibilit.
+select define_function_args('acs_object_type__drop_type','object_type,drop_table_p;f,drop_children_p;f');
-select define_function_args('acs_object_type__drop_type','object_type,cascade_p;f,drop_table_p;f,drop_children_p;f');
-
-- procedure drop_type
-create or replace function acs_object_type__drop_type (varchar,boolean,boolean,boolean)
+create or replace function acs_object_type__drop_type (varchar,boolean,boolean)
returns integer as '
declare
p_object_type alias for $1;
p_drop_children_p alias for $2;
p_drop_table_p alias for $3;
- p_cascade_p alias for $4;
row record;
object_row record;
v_table_name acs_object_types.table_name%TYPE;
@@ -717,20 +713,10 @@
from acs_object_types
where supertype = p_object_type
loop
- perform acs_object_type__drop_type(row.object_type, p_cascade_p, p_drop_table_p, ''t'');
+ perform acs_object_type__drop_type(row.object_type, ''t'', p_drop_table_p);
end loop;
end if;
- -- drop object rows
- if p_cascade_p then
- for object_row in select object_id
- from acs_objects
- where object_type = p_object_type
- loop
- perform acs_object__delete (object_row.object_id);
- end loop;
- end if;
-
-- drop all the attributes associated with this type
for row in select attribute_name
from acs_attributes
@@ -770,7 +756,7 @@
create or replace function acs_object_type__drop_type (varchar,boolean)
returns integer as '
begin
- return acs_object_type__drop_type($1,$2,''f'',''f'');
+ return acs_object_type__drop_type($1,$2,''f'');
end;' language 'plpgsql';
-- function pretty_name
Index: openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.7.0d7-upgrade-5.7.0d8.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/upgrade/Attic/upgrade-5.7.0d7-upgrade-5.7.0d8.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.7.0d7-upgrade-5.7.0d8.sql 7 Mar 2011 01:39:31 -0000 1.1
@@ -0,0 +1,67 @@
+
+select define_function_args('acs_object_type__drop_type','object_type,drop_table_p;f,drop_children_p;f');
+
+-- procedure drop_type
+create or replace function acs_object_type__drop_type (varchar,boolean,boolean)
+returns integer as '
+declare
+ p_object_type alias for $1;
+ p_drop_children_p alias for $2;
+ p_drop_table_p alias for $3;
+ row record;
+ object_row record;
+ v_table_name acs_object_types.table_name%TYPE;
+begin
+
+ -- drop children recursively
+ if p_drop_children_p then
+ for row in select object_type
+ from acs_object_types
+ where supertype = p_object_type
+ loop
+ perform acs_object_type__drop_type(row.object_type, ''t'', p_drop_table_p);
+ end loop;
+ end if;
+
+ -- drop all the attributes associated with this type
+ for row in select attribute_name
+ from acs_attributes
+ where object_type = p_object_type
+ loop
+ perform acs_attribute__drop_attribute (p_object_type, row.attribute_name);
+ end loop;
+
+ -- Remove the associated table if it exists and p_drop_table_p is true
+
+ if p_drop_table_p then
+
+ select table_name into v_table_name
+ from acs_object_types
+ where object_type = p_object_type;
+
+ if found then
+ if not exists (select 1
+ from pg_class
+ where relname = lower(v_table_name)) then
+ raise exception ''Table "%" does not exist'', v_table_name;
+ end if;
+
+ execute ''drop table '' || v_table_name || '' cascade'';
+ end if;
+
+ end if;
+
+ delete from acs_object_types
+ where object_type = p_object_type;
+
+ return 0;
+end;' language 'plpgsql';
+
+-- Retained for backwards compatibility
+
+create or replace function acs_object_type__drop_type (varchar,boolean)
+returns integer as '
+begin
+ return acs_object_type__drop_type($1,$2,''f'');
+end;' language 'plpgsql';
+