-- DRB: As if the following union view weren't unscalable enough for PG
-- (which can't optimize them at all) the following view with its
-- summing of content items sucks to no end.
drop view fs_folders;
create view fs_folders
as
select cr_folders.folder_id,
cr_folders.label as name,
acs_objects.last_modified, -- JCD needs to walk tree as oracle ver
(select count(*) -- DRB: needs to walk tree and won't scale worth shit
from cr_items ci2
where ci2.content_type <> 'content_folder'
and ci2.tree_sortkey between ci.tree_sortkey and tree_right(ci.tree_sortkey)) as content_size,
ci.parent_id,
ci.name as key
from cr_folders,
cr_items ci,
acs_objects
where cr_folders.folder_id = ci.item_id
and cr_folders.folder_id = acs_objects.object_id;
-- DRB: This used to be a plain union view requiring a sort
-- and unique sweep. Union all speeds it up a bit.
drop view fs_objects;
create view fs_objects
as
select fs_folders.folder_id as object_id,
0 as live_revision,
'folder' as type,
fs_folders.content_size,
fs_folders.name,
'' as file_upload_name,
fs_folders.last_modified,
'' as url,
fs_folders.parent_id,
fs_folders.key,
0 as sort_key
from fs_folders
union all
select fs_files.file_id as object_id,
fs_files.live_revision,
fs_files.type,
fs_files.content_size,
fs_files.name,
fs_files.file_upload_name,
fs_files.last_modified,
'' as url,
fs_files.parent_id,
fs_files.key,
1 as sort_key
from fs_files
union all
select fs_urls_full.url_id as object_id,
0 as live_revision,
'url' as type,
0 as content_size,
fs_urls_full.name,
fs_urls_full.name as file_upload_name,
fs_urls_full.last_modified,
fs_urls_full.url,
fs_urls_full.folder_id as parent_id,
fs_urls_full.url as key,
1 as sort_key
from fs_urls_full;