• last updated 8 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Added constraint site_nodes_parent_id_ck to table "site_nodes" to avoid certain simple loops on parent_ids

  1. … 4 more files in changeset.
add editor hints, whitespace changes

  1. … 1 more file in changeset.
whitespace changes

  1. … 1 more file in changeset.
- Convert frequenty used functions from plpgsql

to strict and stable SQL functions, which allow

the PostgreSQL more optimizations

* acs_group__member_p/3

* site_node__url/1

- bump version number to 5.10.0d27

  1. … 3 more files in changeset.
site nodes reform part 2: change from tree_sortkeys to recursive queries

-- This upgrade script completes the commits "change queries on

-- site-node tree from tree_sortkey to recursive queries" from Oct 21,

-- 2018, 4 months ago. This upgrade has the purpose to drop the now

-- obsolete triggers and indices.


-- Delaying the 2nd part had the purpose to make upgrades more smooth,

-- at least for upgrades via .apm files. Without site nodes working,

-- users cannot navigate on their server unless it is restarted.


-- http://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Agustafn%3A20181021173623

-- http://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Agustafn%3A20181021175135

-- http://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Agustafn%3A20181022074137

-- http://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Agustafn%3A20181022085126

-- http://fisheye.openacs.org/changelog/OpenACS?cs=MAIN%3Agustafn%3A20181022081230


  1. … 2 more files in changeset.
imporve spelling

  1. … 6 more files in changeset.
merged changes from the oacs-5-9 branch and resolved conflicts

  1. … 7834 more files in changeset.
- added kernel parameter MaxUrlLength (default 2000) to remove

hard-coded length in request-processor-procs.

- lifted data model restriction of 100 characters for url-segments

(changing types of "site_nodes.name" from "varchar(100)" to "text")

(PostgreSQL only)

- site_node__node_id

* use built-in string functions instead of characterwise loop

* use default for last argument

* Improve source-code documentation

- bumped version number of kernel to 5.9.1d15

  1. … 3 more files in changeset.
- reduce verbosity

Merging back to HEAD all changes that happened in branch oacs-5-8 between tags: vg-merge-oacs-5-8-from-20141027 and vg-merge-oacs-5-8-from-20150427

  1. … 520 more files in changeset.
- add missing indices

- bump version number to 5.8.3d2

  1. … 7 more files in changeset.
Creating recursive version of permissions functions iff pg version is >= 8.4.

  1. … 3 more files in changeset.
Rewriting acs_permission__permission_p function to use recursive queries ( available in PG since 8.4 ) and modifiying

queries around core packages to avoid checking persmissions using a subquery on the acs_object_party_privilege_map view.

  1. … 14 more files in changeset.
Bring PostgreSQL functions closer to the current level of PL/pgSQL:

- upgrade PL/pgSQL functions to the $$ notation (recommended since pg8.0, jan 2005).

- get rid of backslash usages in function definitions

- drop aliases in favor of named function arguments (recommended since pg8.0)

- fix wrong function_args, add missing function_args, align default semantics

with the defaults in pg (providing "null" as default means the argument is


- change return types of triggers from "opaque" to "trigger" (recommended since pg8.0)

- unify names of triggers *_tr

- removed some version dependencies of pg 7.2 and 7.3

  1. … 54 more files in changeset.
On my previous commit I added a not null constraint for name column on site_nodes, the problem is that main site node on oracle has a NULL name ( given the fact that empty strings are managed as NULL on Oracle ) therefore doesnt make sense to have such constraint.

  1. … 3 more files in changeset.
- Avoiding usage of coalesce function on site_nodes table columns in WHERE clause, this was leading to usage of sequencial scans which can be expensive when having a huge amount of site_nodes. Instead we go for isolation of the case when requestion a node with a null parent ( this would be the main site node ) and we use the = operator so the planner goes for a index scan.

- Adding not null constraint to site_nodes(name)

  1. … 4 more files in changeset.
1. Changed trigger functions from "opaque" to "trigger" to get rid of the

warnings during initial install (only for acs-kernel, there are a lot


2. Added "embeds" for postgresql and partially for oracle.

3. Added global parameters for postgresql and partially for oracle.

(oracle will be forthcoming shortly)

  1. … 29 more files in changeset.
fix the static cvs-id tags

  1. … 32 more files in changeset.
Remerge Timo's changes for tip 42,43, cf tip 53

  1. … 97 more files in changeset.
rollback of Timo's name, package_id commit; see TIP 53

  1. … 96 more files in changeset.
TIP#42,43: adding package_id and title to acs_objects table

  1. … 96 more files in changeset.
merge of changes on oacs-5-0 branch to oacs-5-0-0b4 tag

  1. … 598 more files in changeset.
Addresses bug 1148, bug 1149 (and performance problems generally with plpgsql functions).

eliminate with(isstrict,iscachable) in favor of the new syntax strict, immutable, stable.

bump version of acs-kernel, acs-content-repository to 5.0.0b4, upgrade scripts provided.

Fix bugs with the following plpgsql procs:

acs_object__initialize_attributes: raise exception on null input.

acs_object__set_attribute: exception on null input

acs_object_util__get_object_type: remove the exception after the return statement

apm__unregister_package: properly default cascade_p

apm__unregister_service: properly default cascade_p

content_item.get_parent_folder: infinite loop on input if not a direct descendent of a folder (fixed on oracle too)

content_item__get_context: exception on null input, fix bug in exception print (wrong variable name)

content_item__is_publishable: returned t on null and invalid items

content_item__is_subclass: did not short curcuit loop when subclass found

content_item__move: would silently ignore null target_id

content_revision__copy_attributes: generate an exception on null input

content_revision__export_xml: generate exception if called (unimplemented in postgres)

content_symlink__copy: generate exception if called (unimplemented)

apm_package__parent_id: returned -1 on not found rather than null

content_folder__is_registered: no default provided in code for include_subtypes

content_keyword__is_assigned: no default for recurse...

content_revision__import_xml: generate exception if called (unimplemented in postgres)

content_revision__index_attributes: generate exception if called (unimplemented in postgres)

content_type__trigger_insert_statement: now generates exception on null input (was silent failure)

number_src: infinite loop on null input

rule_exists: fix case folded lookup

Declare the following stable:

get_func_definition get_func_header acs_message__name

acs_object_type_insert_tr acs_message__message_p

acs_object_type__pretty_name acs_message__first_ancestor

acs_object_type__is_subtype_p acs_objects_get_tree_sortkey

acs_object__name acs_object__default_name

acs_object__get_attribute_storage acs_object__get_attribute

acs_object__check_path acs_mail_link__link_p

acs_object_util__object_type_exist_p acs_object_util__get_object_type


acs_object_util__object_ancestor_type_p acs_object_util__object_type_p

acs_rel_type__role_pretty_name acs_rel_type__role_pretty_plural

party__email person__name person__first_names person__last_name


acs_user__receives_alerts_p group_contains_p

acs_message_get_tree_sortkey acs_mail_body__body_p

acs_permission__permission_p acs_mail_multipart__multipart_p

content_keyword__get_heading acs_group__name acs_group__member_p

rel_segment__get rel_segment__name rel_constraint__get_constraint_id

rel_constraint__violation rel_constraint__violation_if_removed

content_keyword__get_description site_node_get_tree_sortkey

timezone__convert_to_local timezone__get_offset

timezone__get_rawoffset timezone__get_abbrev timezone__get_date

timezone__isdst_p rdbms_date apm__register_p timezone__get_id

doc__get_proc_header apm__parameter_p apm__id_for_name apm__get_value

apm__get_value apm_package__initial_install_p apm_package__singleton_p

apm_package__num_instances apm_package__name

apm_package__highest_version apm_package__parent_id

apm_package_type__num_parameters content_keyword__is_leaf

acs_sc_msg_type__get_id acs_sc_msg_type__get_name

acs_sc_contract__get_id acs_sc_contract__get_name

acs_sc_operation__get_id acs_sc_impl__get_id acs_sc_impl__get_name

acs_sc_binding__exists_p cr_items_get_tree_sortkey

content_keyword__is_assigned content_keyword__get_path

content_template__is_template cr_keywords_get_tree_sortkey

content_template__get_path table_exists column_exists trigger_exists

trigger_func_exists rule_exists content_folder__is_registered

content_folder__get_label content_folder__get_index_page

content_type__get_template content_type__trigger_insert_statement

content_type__is_content_type content_item__get_root_folder

content_item__is_published content_item__is_publishable

content_item__is_valid_child content_item__get_id

content_item__get_template content_item__get_content_type

content_item__get_live_revision content_item__get_revision_count

content_item__get_context content_item__get_latest_revision

content_item__get_best_revision content_item__get_title

content_item__get_title content_item__get_publish_date

content_item__is_subclass content_item__is_index_page

content_item__get_parent_folder content_revision__get_number

content_revision__revision_name content_revision__is_latest

content_revision__get_content content_symlink__is_symlink

content_symlink__resolve_content_type content_extlink__is_extlink

content_folder__is_folder content_folder__is_empty

file_storage__get_root_folder file_storage__get_package_id

forums_message__root_message_id content_symlink__resolve

  1. … 42 more files in changeset.
fixing creation of site_node under postgres

  1. … 2 more files in changeset.
added site_nodes_parent_id_idx based on results from scalability testing

  1. … 1 more file in changeset.

Added code to make use of David Walker's wonderfully abusive hack on the

pg_proc table that showed me how to write recursive SQL functions. We now

have good use of the index on tree_sortkey when climbing the tree, woo-hoo!

  1. … 18 more files in changeset.

Changed the representation of tree_sortkeys from "text" to "bit varying".

  1. … 62 more files in changeset.

1. Replaced more "tree_sortkey like" with "tree_sortkey between" expressions

2. Fixed a bad port of an Oracle query in site-nodes-procs.tcl and removed

a needless outer join from both versions in the process.

  1. … 11 more files in changeset.

1. Ripped out the '' vs. NULL string kludge, which was a stupid idea in the

first place (MY stupid idea, for the record).

2. More .xql file porting...

  1. … 23 more files in changeset.
added comments for default api values

  1. … 12 more files in changeset.