Index: openacs-4/contrib/obsolete-packages/bboard/tcl/bboard-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/obsolete-packages/bboard/tcl/bboard-procs.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/contrib/obsolete-packages/bboard/tcl/bboard-procs.tcl 30 Nov 2001 00:50:22 -0000 1.7 +++ openacs-4/contrib/obsolete-packages/bboard/tcl/bboard-procs.tcl 1 Dec 2001 17:55:16 -0000 1.8 @@ -984,6 +984,22 @@ In particular, this deletes message objects that aren't currently in a forum, but that are children of bboard messages or bboard forums. + DRB: The bboard package duplicates messages when you choose to mail one + to a friend, setting the new message's context_id to the original message. + This new message doesn't belong to a forum. The context_id is used to + retrieve these via CONNECT BY and they're then deleted (presumably under + the assumption that they've been e-mailed immediately). + + This is context_id abuse. Context_id is supposed to be used for + permissions inheritance only. This is one of several instances in the + toolkit where context_id is used to link objects together in a hierarchy + in a way that has nothing to do with permissions. It sucks and must be + fixed later (along with a bunch of other crap in this relatively ugly + package). + + I don't think orphans arise in other circumstances but I could be wrong + as I've not scoured the code thoroughly yet. + } { acs_messaging_process_queue 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 -r1.10 -r1.11 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 15 Nov 2001 01:47:13 -0000 1.10 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 1 Dec 2001 17:55:16 -0000 1.11 @@ -97,12 +97,12 @@ for v_rec in select object_type from acs_object_types - where tree_sortkey like new.tree_sortkey || ''%'' + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey) order by tree_sortkey LOOP if clr_keys_p then update acs_object_types set tree_sortkey = null - where tree_sortkey like new.tree_sortkey || ''%''; + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey); clr_keys_p := ''f''; end if; @@ -232,8 +232,7 @@ from acs_object_types ot1, acs_object_types ot2 where ot1.object_type <> ot2.object_type - and ot2.tree_sortkey <= ot1.tree_sortkey - and ot1.tree_sortkey like (ot2.tree_sortkey || '%'); + and ot1.tree_sortkey between ot2.tree_sortkey and tree_right(ot2.tree_sortkey); create table acs_object_type_tables ( object_type varchar(100) not null @@ -698,12 +697,10 @@ select count(*) into v_result where exists (select 1 - from acs_object_types t + from acs_object_types t, acs_object_types t2 where t.object_type = is_subtype_p__object_type_2 - and tree_sortkey like - (select tree_sortkey || ''%'' - from acs_object_types - where object_type = is_subtype_p__object_type_1 )); + and t2.object_type = is_subtype_p__object_type_1 + and t.tree_sortkey between t2.tree_sortkey and tree_right(t2.tree_sortkey)); if v_result > 0 then return ''t''; Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-object-util.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-object-util.sql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-object-util.sql 28 Jul 2001 14:26:45 -0000 1.1 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-object-util.sql 1 Dec 2001 17:55:16 -0000 1.2 @@ -42,7 +42,6 @@ p_object_type1 alias for $1; p_object_type2 alias for $2; v_exist_p boolean := ''f''; - v_count integer := 0; begin v_exist_p := acs_object_util__object_type_exist_p(p_object_type1); @@ -56,17 +55,11 @@ raise exception ''Object type % does not exist'', p_object_type2; end if; - select count(*) into v_count - from dual - where p_object_type2 in (select o2.object_type - from acs_object_types o1, acs_object_types o2 - where o1.object_type = p_object_type1 - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || ''%'')); - - select (case when v_count=1 then ''t'' else ''f'' end) into v_exist_p; - - return v_exist_p; + return exists (select 1 + from acs_object_types o1, acs_object_types o2 + where p_object_type2 = o2.object_type + and o1.object_type = p_object_type1 + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey); end;' language 'plpgsql'; Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql,v diff -u -r1.24 -r1.25 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql 11 Oct 2001 04:03:49 -0000 1.24 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql 1 Dec 2001 17:55:16 -0000 1.25 @@ -278,12 +278,12 @@ for v_rec in select object_id from acs_objects - where tree_sortkey like new.tree_sortkey || ''%'' + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey) order by tree_sortkey LOOP if clr_keys_p then update acs_objects set tree_sortkey = null - where tree_sortkey like new.tree_sortkey || ''%''; + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey); clr_keys_p := ''f''; end if; @@ -744,8 +744,7 @@ where o1.object_type = (select object_type from acs_objects o where o.object_id = delete__object_id) - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || ''%'') + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey) order by o2.tree_sortkey desc loop -- Delete from the table. @@ -791,8 +790,7 @@ where o1.object_type = (select object_type from acs_objects o where o.object_id = name__object_id) - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || ''%'') + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey) order by o2.tree_sortkey desc loop if obj_type.name_method != '''' and obj_type.name_method is NOT null then @@ -881,8 +879,7 @@ where o1.object_type = (select object_type from acs_objects o where o.object_id = object_id_in) - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || ''%'') + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey) ) t where a.attribute_name = attribute_name_in Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql,v diff -u -r1.17 -r1.18 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql 28 Nov 2001 18:39:39 -0000 1.17 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql 1 Dec 2001 17:55:16 -0000 1.18 @@ -96,8 +96,8 @@ -- from acs_privilege_hierarchy_index h1, -- acs_privilege_hierarchy_index h2 -- where h1.child_privilege = 'cm_perm' --- and h1.tree_sortkey like (h2.tree_sortkey || '%') --- and h2.tree_sortkey < h1.tree_sortkey; +-- and h1.tree_sortkey between h2.tree_sortkey and tree_right(h2.tree_sortkey) +-- and h2.tree_sortkey <> h1.tree_sortkey; -- Also since acs_privilege_descendant_map is simply a path enumeration of -- acs_privilege_hierarchy, we should be able to replace the above connect-by @@ -361,7 +361,7 @@ where h1.privilege = p1.privilege and h2.privilege = p2.privilege - and h2.tree_sortkey like h1.tree_sortkey || '%') or + and h2.tree_sortkey between h1.tree_sortkey and tree_right(h1.tree_sortkey)) or p1.privilege = p2.privilege; create view acs_permissions_all Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql,v diff -u -r1.8 -r1.9 --- openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql 28 Aug 2001 23:51:53 -0000 1.8 +++ openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql 1 Dec 2001 17:55:16 -0000 1.9 @@ -367,19 +367,15 @@ acs_objects o1, acs_objects o2 where exists (select 1 - from acs_object_types t + from acs_object_types t, acs_object_types o where t.object_type = o1.object_type - and t.tree_sortkey - like (select o.tree_sortkey || ''%'' - from acs_object_types o - where o.object_type = rt.object_type_one)) + and o.object_type = rt.object_type_one + and t.tree_sortkey between o.tree_sortkey and tree_right(o.tree_sortkey)) and exists (select 1 - from acs_object_types t + from acs_object_types t, acs_object_types o where t.object_type = o2.object_type - and t.tree_sortkey - like (select o.tree_sortkey || ''%'' - from acs_object_types o - where o.object_type = rt.object_type_two)) + and o.object_type = rt.object_type_two + and t.tree_sortkey between o.tree_sortkey and tree_right(o.tree_sortkey)) and rt.rel_type = new.rel_type and o1.object_id = new.object_id_one and o2.object_id = new.object_id_two; Index: openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql,v diff -u -r1.11 -r1.12 --- openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql 20 Apr 2001 18:04:01 -0000 1.11 +++ openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql 1 Dec 2001 17:55:16 -0000 1.12 @@ -309,14 +309,10 @@ -- and rc_required_rel_segments.group_id is null; create view comp_or_member_rel_types as -select object_type as rel_type - from acs_object_types - where tree_sortkey like (select o.tree_sortkey || '%' - from acs_object_types o - where o.object_type = 'composition_rel') - or tree_sortkey like (select o.tree_sortkey || '%' - from acs_object_types o - where o.object_type = 'membership_rel'); +select o.object_type as rel_type + from acs_object_types o, acs_object_types o1 + where o1.object_type in ('composition_rel', 'membership_rel') + and o.tree_sortkey between o1.tree_sortkey and tree_right(o1.tree_sortkey); create view group_rel_type_combos as select groups.group_id, comp_or_member_rel_types.rel_type Index: openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql 14 Mar 2001 14:07:31 -0000 1.2 +++ openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql 1 Dec 2001 17:55:16 -0000 1.3 @@ -191,14 +191,11 @@ create view rel_segment_party_map as select rs.segment_id, gem.element_id as party_id, gem.rel_id, gem.rel_type, gem.group_id, gem.container_id, gem.ancestor_rel_type - from rel_segments rs, - group_element_map gem + from rel_segments rs, group_element_map gem, acs_object_types o1, acs_object_types o2 where gem.group_id = rs.group_id - and rs.rel_type in (select o2.object_type - from acs_object_types o1, acs_object_types o2 - where o1.object_type = gem.rel_type - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || '%')); + and o1.object_type = gem.rel_type + and o2.object_type = rs.rel_type + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey); create view rel_segment_distinct_party_map as select distinct segment_id, party_id, ancestor_rel_type @@ -228,13 +225,12 @@ create view rel_seg_approved_member_map as select rs.segment_id, gem.element_id as member_id, gem.rel_id, gem.rel_type, gem.group_id, gem.container_id - from membership_rels mr, group_element_map gem, rel_segments rs + from membership_rels mr, group_element_map gem, rel_segments rs, + acs_object_types o1, acs_object_types o2 where rs.group_id = gem.group_id - and rs.rel_type in (select o2.object_type - from acs_object_types o1, acs_object_types o2 - where o1.object_type = gem.rel_type - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || '%')) + and rs.rel_type = o2.object_type + and o1.object_type = gem.rel_type + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey) and mr.rel_id = gem.rel_id and mr.member_state = 'approved'; create view rel_seg_distinct_member_map @@ -317,11 +313,10 @@ UNION ALL select group_id, group_id as component_id from groups) gcm, - acs_rel_types + acs_rel_types, + acs_object_types o1, acs_object_types o2 where s.group_id = gcm.group_id - and s.rel_type in (select o2.object_type - from acs_object_types o1, acs_object_types o2 - where o1.object_type = acs_rel_types.rel_type - and o2.tree_sortkey <= o1.tree_sortkey - and o1.tree_sortkey like (o2.tree_sortkey || '%')); + and s.rel_type = o2.object_type + and o1.object_type = acs_rel_types.rel_type + and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey); Index: openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql,v diff -u -r1.11 -r1.12 --- openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql 28 Apr 2001 17:35:30 -0000 1.11 +++ openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql 1 Dec 2001 17:55:16 -0000 1.12 @@ -110,12 +110,12 @@ for v_rec in select node_id from site_nodes - where tree_sortkey like new.tree_sortkey || ''%'' + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey) order by tree_sortkey LOOP if clr_keys_p then update site_nodes set tree_sortkey = null - where tree_sortkey like new.tree_sortkey || ''%''; + where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey); clr_keys_p := ''f''; end if; Index: openacs-4/packages/acs-tcl/tcl/site-nodes-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/site-nodes-procs-oracle.xql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/acs-tcl/tcl/site-nodes-procs-oracle.xql 30 Nov 2001 04:06:47 -0000 1.3 +++ openacs-4/packages/acs-tcl/tcl/site-nodes-procs-oracle.xql 1 Dec 2001 17:55:16 -0000 1.4 @@ -27,7 +27,7 @@ from acs_objects o, (select n.node_id, n.directory_p, n.pattern_p, n.object_id, p.package_key, p.package_id from site_nodes n, apm_packages p where n.object_id = p.package_id) n - where n.object_id = o.object_id (+) + where n.object_id = o.object_id Index: openacs-4/packages/acs-tcl/tcl/site-nodes-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/site-nodes-procs-postgresql.xql,v diff -u -r1.6 -r1.7 --- openacs-4/packages/acs-tcl/tcl/site-nodes-procs-postgresql.xql 19 Aug 2001 16:32:15 -0000 1.6 +++ openacs-4/packages/acs-tcl/tcl/site-nodes-procs-postgresql.xql 1 Dec 2001 17:55:16 -0000 1.7 @@ -2,6 +2,22 @@ postgresql7.1 + + + + + select site_node__url(n.node_id) as url, n.node_id, n.directory_p, + n.pattern_p, n.object_id, o.object_type, n.package_key, n.package_id + from acs_objects o, + (select n.node_id, n.directory_p, n.pattern_p, n.object_id, + p.package_key, p.package_id + from site_nodes n, apm_packages p + where n.object_id = p.package_id) n + where n.object_id = o.object_id + + + + Index: openacs-4/packages/acs-tcl/tcl/site-nodes-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/site-nodes-procs.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/acs-tcl/tcl/site-nodes-procs.xql 24 Apr 2001 22:38:12 -0000 1.2 +++ openacs-4/packages/acs-tcl/tcl/site-nodes-procs.xql 1 Dec 2001 17:55:16 -0000 1.3 @@ -1,22 +1,6 @@ - - - - select site_node__url(n.node_id) as url, n.node_id, n.directory_p, - n.pattern_p, n.object_id, o.object_type, n.package_key, n.package_id - from acs_objects o left outer join - (select n.node_id, n.directory_p, n.pattern_p, n.object_id, - p.package_key, p.package_id - from site_nodes n, apm_packages p - where n.object_id = p.package_id) n - using (object_id) - - - - -