• last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
whitespace changes (remove tabs)

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

  1. … 7834 more files in changeset.
fix issue #3306: missing comma in *-oracle.xql file

Merging back to HEAD branch oacs-5-8 (using tag vg-merge-oacs-5-8-from-20141027).

  1. … 2547 more files in changeset.
- add release date to package info

  1. … 2 more files in changeset.
Getting rid of last calls to deprecated ad_table. Instead using the list-builder. There is still one call to ad_table within acs-subsite but this page is not linked from anywhere anymore ( probably we remove it later ).

  1. … 6 more files in changeset.
removing the file count for packages on the APM index page as counting from the file system would be fairly expensive (maybe as much as a second for many packages)

  1. … 2 more files in changeset.
removing the file count for packages on the APM index page as counting from the file system would be fairly expensive (maybe as much as a second for many packages)

  1. … 2 more files in changeset.

After importing openacs.org users, forums and messages I discovered that it

took literally several minutes to load the APM's home page. This was due

to a rather stupid subselect of the form:

select count(*)

from content_revisions r

where r.revision_id = content_item.get_latest_revision(item_id)

where item_id comes from the package versions table.

It's stupid in both PG and Oracle because get_latest_revision already

joins the latest_revision_id value from cr_items with the content

revisions table thus a simple check for a null return by get_latest_revision

would be sufficient.

It's *really* stupid in Oracle because Oracle won't use the index on

revision_id when checking NULLs so we get two sequential scans of the

cr_revisions table tucked into that one itty-bitty subquery (itself called

once for each package version in ths system).

Which explains why I hadn't noticed it while working on scalability testing

in PG - PG uses the index because its btree index structure handles NULLs.

Meaning this query only fell apart at a rate of O(log2(R)) rather than O(R)

as in Oracle (R being the number of revision objects in the system).

My solution was to rewrite the subselect using "case" rather than "count(*)"

and also to speed up get_latest_revision by having it check for NULL and

return NULL immediately rather than execute the query (in PG this is

accomplished by declaring the function "isstrict", and the executor won't

even call the function if the argument's NULL, making it REALLY fast!).

  1. … 3 more files in changeset.

Added calls to Dan's new "db_map" routine to make db-specific queries in

the apm index page work.

  1. … 2 more files in changeset.
converted apm to store tarballs in the content repository

  1. … 7 more files in changeset.
*** empty log message ***

  1. … 2 more files in changeset.

1. Fixed apm_load_queries. Again? Yes, again. I fixed it real good this

time.

2. Added .xql files for acs-admin. APM .xql files have mostly but not

completely been ported. It sort of works though, cool!

1. Fixed apm_load_queries. Again? Yes, again. I fixed it real good this

time.

2. Added .xql files for acs-admin. APM .xql files have mostly but not

completely been ported. It sort of works though, cool!

  1. … 60 more files in changeset.